我有一个包含2列的表:
id | word
总行数约为20万。 我想以最快的方式在第二列中找到子字符串。 我已尝试使用索引btree和hash,但这些方法仅在以下情况下才会提高性能:
SELECT * FROM tbl WHERE word like 'string'.
但我想调整此查询:
SELECT * FROM tbl WHERE word like '%sub-string%'
答案 0 :(得分:4)
对于PostgreSQL,可以使用trigram索引调整条件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-teaching-LIKE-and-ILIKE-new-tricks.html
使用两个引擎的全文搜索功能也是一种选择。