1

2列のテーブルがあります:

id | word

合計行数は約 20 万行です。2列目の部分文字列を最速で見つけたい。インデックス btree とハッシュを試してみましたが、これらの方法でパフォーマンスが向上するのは次の場合のみです。

SELECT * FROM tbl WHERE word like 'string'.

しかし、私はこのクエリを調整したい:

SELECT * FROM tbl WHERE word like '%sub-string%'

問題の例は次のとおりです: http://www.labdg.com/en/anagrammi.php?&lg=EN

4

1 に答える 1

4

PostgreSQL の場合like '%sub-string%'、トライグラム インデックスを使用して条件を調整できます。

詳細については、次のブログ記事を参照してください。

http://www.depesz.com/2011/02/19/waiting-for-9-1-faster-likeilike/
http://www.postgresonline.com/journal/archives/212-PostgreSQL-9.1-Trigrams-教育-LIKE-and-ILIKE-new-tricks.html

両方のエンジンの全文検索機能を使用することもオプションです。

于 2012-06-25T10:43:02.177 に答える