例如:
如果删除较低函数,则查询性能优于使用较低函数。使用较低会跳过索引。是
SELECT X.article_number, X.online_description
FROM articles X
WHERE LOWER(X.online_description) % usp_get_search_terms ('coke');
如果条件为以下形式,则索引只能用于加速WHERE
条件:
<indexed expression> <operator> <constant>
在这里,<operator>
必须是索引的运算符类中的运算符,并且<constant>
实际上不必是一个常量,而是在索引扫描期间固定的。
我假设%
是pg_trgm
扩展的相似性运算符。然后,您需要一个带有gin_trgm_ops
运算符类的 GIN 索引或一个带有gist_trgm_ops
运算符类的 GiST 索引。
由于三元组操作无论如何都不区分大小写,因此应从查询中删除lower()
。否则,您必须在lower(online_description)
上创建索引,这将浪费 CPU。