GINインデックスの何が問題なのですが、SEQスキャンを回避できませんか?
create table mytable(hash char(40), title varchar(500));
create index name_fts on mytable using gin(to_tsvector('english', 'title'));
CREATE UNIQUE INDEX md5_uniq_idx ON mytable(hash);
私はタイトルを照会私はこのような表を作成しました
、
test=# explain analyze select * from mytable where to_tsvector('english', title) @@ 'abc | def'::tsquery limit 10;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..277.35 rows=10 width=83) (actual time=0.111..75.549 rows=10 loops=1)
-> Seq Scan on mytable (cost=0.00..381187.45 rows=13744 width=83) (actual time=0.110..75.546 rows=10 loops=1)
Filter: (to_tsvector('english'::regconfig, (title)::text) @@ '''abc'' | ''def'''::tsquery)
Rows Removed by Filter: 10221
Planning time: 0.176 ms
Execution time: 75.564 ms
(6 rows)
インデックスが使用されていません。何か案は?私は10mの行を持っています。あなたのインデックス定義にタイプミスがあり
これは、フルテキスト検索の仕組みではありません。 – Phill
@Phillあなたは精緻化できますか? – daisy
クエリは実行時の値を変換しますが、これは遅くなりますが、インデックスは使用されません。テーブルの別の列にtsvectorを格納する必要があります。 – Phill