1

我有一个有 2 列的表:

id | word

总行数约为 20 万。我想以最快的方式在第二列中找到子字符串。我尝试过使用索引 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 回答