【发布时间】:2020-05-27 08:48:57
【问题描述】:
postgres trigram documentation 声明:
pg_trgm 模块提供 GiST 和 GIN 索引运算符类,允许您在文本列上创建索引,以实现非常快速的相似性搜索。这些索引类型支持上述相似性运算符,还支持基于三元组的索引搜索 LIKE、ILIKE、~ 和 ~* 查询。
并显示以下示例:
SELECT t, word_similarity('word', t) AS sml
FROM test_trgm
WHERE 'word' <% t
ORDER BY sml DESC, t;
太棒了!
但是,当运行以下查询时:
SELECT *
FROM place
WHERE word_similarity(place.name, '__SOME_STRING__') > 0.5
创建的索引未被使用。
但是,当使用 ILIKE 或 %> 运算符时,似乎正在使用索引。为什么word_similarity 函数上没有使用索引?
【问题讨论】:
标签: sql postgresql indexing trigram