关于LIKE查询数据库中特定表的响应时间,我看到了相当大的变化.有时我会在200-400毫秒内得到结果(非常可接受),但有时候返回结果可能需要30秒.
我知道LIKE查询是非常耗费资源的,但我只是不明白为什么响应时间会有这么大的差异.我已经在该owner1字段上构建了一个btree索引,但我认为这对LIKE查询没有帮助.有人有主意吗?
示例SQL:
SELECT gid, owner1 FORM parcels
WHERE owner1 ILIKE '%someones name%' LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)
和:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)
有类似的结果.
表行数:约95,000.
postgresql indexing query-optimization pattern-matching sql-like
我正在实现一个具有数据类型为的列的表,tsvector我试图了解哪个索引更适合使用?
GIN还是GiST?
通过这里查看postgres文档,我似乎得到了:
GiST更新和构建索引的速度更快,而且比杜松子酒更准确.
GIN更新和构建索引的速度较慢,但更准确.
好的,那么为什么有人想要杜松子酒的gist索引字段呢?如果要点可能会给你错误的结果?必须有一些优势(外部表现).
当我想要使用GIN和GiST时,有人可以用外行的方式解释吗?