【发布时间】:2013-09-25 16:57:28
【问题描述】:
我在files 表的name 列上设置了一个GiST pg_trgm 索引。
预处理语句的简化查询如下所示:
SELECT * FROM files WHERE name LIKE $1;
$1 参数将由 % + 用户查询 + % 组成。由于输入也可能是一个空字符串,这可能会导致%%。
“空”LIKE (%%) 是否会导致性能下降?在这种情况下我应该建立一个新的查询,还是没关系?
【问题讨论】:
-
查看执行计划就知道了
-
请问我是否知道如何使用/阅读执行计划?
-
@ErikAigner "Empty" like (
name LIKE '%%') 仍将过滤掉name is null所在的行。如果您根本不需要过滤器 - 添加or length(user_query) = 0。
标签: sql postgresql pattern-matching prepared-statement postgresql-performance