約 500 万レコードの Postgres テーブルがあり、入力キーに最も近いものを見つけたいと考えています。pg_trgm モジュールでトライグラムを使用してみましたが、クエリごとに約 5 秒かかり、私のニーズには遅すぎます。
Postgres 内であいまい一致を行うより高速な方法はありますか?
約 500 万レコードの Postgres テーブルがあり、入力キーに最も近いものを見つけたいと考えています。pg_trgm モジュールでトライグラムを使用してみましたが、クエリごとに約 5 秒かかり、私のニーズには遅すぎます。
Postgres 内であいまい一致を行うより高速な方法はありますか?
説明出力の結果サイズの見積もりがかなりずれているようです。全文検索の結果を適切に見積もることは非常に難しいため、これは予想外のことではありません。
これにより、Postgresql は不適切なクエリ プランを使用します。ビットマップ スキャンを無効にして (enable_bitmapscan=off に設定)、再試行してください。
Soundexは代替ファジー マッチですが、非常にファジーになる可能性があります。可能であれば、トライグラムの一致に固執します。トリグラム検索をより小さな結果セットで機能させるために使用できる別の基準はありますか?
探しているものに応じて、Postgres は標準の "like" 構文ではなく、正規表現で一致を行うこともできます。それはあなたにより適しているかもしれません。