sql子串性能

时间:2012-06-25 09:42:07

标签: mysql sql performance postgresql string-matching

我有一个包含2列的表:

id | word

总行数约为20万。 我想以最快的方式在第二列中找到子字符串。 我已尝试使用索引btree和hash,但这些方法仅在以下情况下才会提高性能:

SELECT * FROM tbl WHERE word like 'string'.

但我想调整此查询:

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

以下是问题示例:http://www.labdg.com/en/anagrammi.php?&lg=EN

1 个答案:

答案 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

使用两个引擎的全文搜索功能也是一种选择。