我有一个有 2 列的表:
id | word
总行数约为 20 万。我想以最快的方式在第二列中找到子字符串。我尝试过使用索引 btree 和哈希,但这些方法仅在以下情况下才能提高性能:
SELECT * FROM tbl WHERE word like 'string'.
但我想调整这个查询:
SELECT * FROM tbl WHERE word like '%sub-string%'
我有一个有 2 列的表:
id | word
总行数约为 20 万。我想以最快的方式在第二列中找到子字符串。我尝试过使用索引 btree 和哈希,但这些方法仅在以下情况下才能提高性能:
SELECT * FROM tbl WHERE word like 'string'.
但我想调整这个查询:
SELECT * FROM tbl WHERE word like '%sub-string%'
对于 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
使用两个引擎的全文搜索功能也是一种选择。