【发布时间】:2010-12-06 16:57:45
【问题描述】:
我发现LIKE 对我数据库中特定表的查询的响应时间变化很大。有时我会在 200-400 毫秒内得到结果(非常可接受),但有时可能需要 30 秒才能返回结果。
我知道LIKE 查询非常耗费资源,但我只是不明白为什么响应时间会有如此大的差异。我在owner1 字段上建立了一个btree 索引,但我认为它对LIKE 查询没有帮助。有人有什么想法吗?
示例 SQL:
SELECT gid, owner1 FORM parcels
WHERE owner1 ILIKE '%someones name%' LIMIT 10
我也试过了:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10
还有:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10
结果相似。
表行数:约 95,000。
【问题讨论】:
标签: postgresql indexing pattern-matching query-optimization sql-like