複数列インデックス

現在、Ludiaはマルチカラムインデックスが作成できません。
Ludia1.3.0ではマルチカラムインデックスが実装されます。

シングルカラムインデックス
=# CREATE TABLE tab (col1 TEXT, col2 TEXT);
=# CREATE INDEX idx1 ON tab USING fulltext(col1);
=# CREATE INDEX idx2 ON tab USING fulltext(col2);
=# INSERT ...;
=# SELECT * FROM tab WHERE col1 @@ 'test' AND col2 @@ 'hoge';
=# SELECT * FROM tab WHERE col1 @@ 'test' OR col2 @@ 'hoge';


マルチカラムインデックス
=# CREATE TABLE tab (col1 TEXT, col2 TEXT);
=# CREATE INDEX idx1 ON tab USING fulltext(col1, col2);
=# INSERT ...;
=# SELECT * FROM tab WHERE col1 @@ 'test' AND col2 @@ 'hoge';
=# SELECT * FROM tab WHERE col1 @@ 'test' OR col2 @@ 'hoge';

ざっと調べたところ、構築速度は変わりません。
インデックスサイズは若干小さくなります。
メモリ使用量は若干小さくなります。
上記のAND検索は速くなります。
上記のOR検索速度はほとんど変わりません。


OR検索が速くならないのがちょっと悲しいです。
OR検索が速くなる方法は、仕様も含め検討中です。
配列型を利用して進めています。
実装が汚くなりそうで、検討に時間がかかっています。
さーて、がんばるぞっと。