全文検索クエリでのORDER BYの最適化
entities1500万レコードまでの大きなテーブルがあります。の「ホッケー」に一致する上位5行を見つけたいname。 に全文索引がありますname。これは次のように使用されます。gin_ix_entity_full_text_search_name クエリ: SELECT "entities".*, ts_rank(to_tsvector('english', "entities"."name"::text), to_tsquery('english', 'hockey'::text)) AS "rank0.48661998202865475" FROM "entities" WHERE "entities"."place" = 'f' AND (to_tsvector('english', "entities"."name"::text) @@ to_tsquery('english', 'hockey'::text)) ORDER BY "rank0.48661998202865475" DESC LIMIT 5 期間25,623ミリ秒 計画を説明する 1制限(コスト= 12666.89..12666.89行= 5幅= 3116) 2->ソート(コスト= 12666.89..12670.18行= 6571幅= 3116) 3ソートキー:(ts_rank(to_tsvector( 'english' :: regconfig、(name):: text)、 '' 'hockey' '' :: tsquery)) 4->エンティティに対するビットマップヒープスキャン(コスト= …