Sql 为什么postgres trigram单词的相似性函数不使用gin索引?

Sql 为什么postgres trigram单词的相似性函数不使用gin索引?,sql,postgresql,indexing,trigram,Sql,Postgresql,Indexing,Trigram,博士后表示: pg_trgm模块提供GiST和GIN索引运算符类,允许您在文本列上创建索引,以便进行非常快速的相似性搜索。这些索引类型支持上述相似性运算符,另外还支持基于三元图的索引搜索,用于LIKE、ILIKE、~和~*查询 并显示以下示例: 选择t,word\u相似性('word',t)作为sml 从测试_trgm 其中“word”0.5 创建的索引未被使用 但是,当使用ILIKE或%>运算符时,似乎确实在使用索引。为什么在word\u similarity函数中不使用索引 根据这个 Po

博士后表示:

pg_trgm模块提供GiST和GIN索引运算符类,允许您在文本列上创建索引,以便进行非常快速的相似性搜索。这些索引类型支持上述相似性运算符,另外还支持基于三元图的索引搜索,用于LIKE、ILIKE、~和~*查询

并显示以下示例:

选择t,word\u相似性('word',t)作为sml
从测试_trgm
其中“word”0.5
创建的索引未被使用

但是,当使用
ILIKE
%>
运算符时,似乎确实在使用索引。为什么在
word\u similarity
函数中不使用索引

根据这个

PostgreSQL不使用WHERE子句中函数的索引扫描。所以 您始终需要使用运算符。你可以试试