猿问

类似PostgreSQL的查询性能变化

类似PostgreSQL的查询性能变化

我已经看到在响应时间上有相当大的变化LIKE对数据库中特定表的查询。有时我会在200到400毫秒内得到结果(非常可以接受),但其他时候可能需要30秒才能返回结果。

我明白LIKE查询非常耗费资源,但我只是不明白为什么响应时间会有这么大的差异。我已经在owner1但我觉得这对LIKE查询。有人有什么想法吗?

示例SQL:

SELECT gid, owner1 FORM parcelsWHERE owner1 ILIKE '%someones name%' LIMIT 10

我也试过:

SELECT gid, owner1 FROM parcelsWHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10

以及:

SELECT gid, owner1 FROM parcelsWHERE lower(owner1) LIKE lower('someones name%') LIMIT 10

有着相似的结果。
表排数:大约95,000。


神不在的星期二
浏览 687回答 3
3回答

皈依舞

可能快速的模式是锚定模式,具有区分大小写的特性,比如可以使用索引。也就是说,在匹配字符串的开头没有通配符,所以执行者可以使用索引范围扫描。(文档中的相关评论在这里)除非专门为此创建索引,否则Ler和ilike也将失去使用索引的能力(请参见功能指标).如果要在字段中间搜索字符串,则应查看全文或曲线图指标..第一种是在Postgres核心,另一种是在控制模块中。

茅侃侃

你可以安装野速,这是PostgreSQL中的一种不同类型的索引。野生速度使用%word%通配符,没有问题。缺点是指数的大小,这可能很大,很大。
随时随地看视频慕课网APP
我要回答