有什么方法可以加快PostgreSQL计数查询的速度?
我正在一个720万行的表上运行不区分大小写的搜索,我想知道是否有任何方法可以使这个查询更快 目前,仅使用一个搜索参数执行大约需要11.6秒,我担心一旦添加多个参数,此查询将变得非常缓慢有什么方法可以加快PostgreSQL计数查询的速度?,sql,database,postgresql,search,Sql,Database,Postgresql,Search,我正在一个720万行的表上运行不区分大小写的搜索,我想知道是否有任何方法可以使这个查询更快 目前,仅使用一个搜索参数执行大约需要11.6秒,我担心一旦添加多个参数,此查询将变得非常缓慢 SELECT count(*) FROM "exif_parse" WHERE (description ~* 'canon') ---编辑--- phpPgAdmin告诉我,此列上有一个索引,定义如下: desc_idx CREATE INDEX desc_idx ON exif_parse USING
SELECT count(*)
FROM "exif_parse"
WHERE (description ~* 'canon')
---编辑---
phpPgAdmin告诉我,此列上有一个索引,定义如下:
desc_idx CREATE INDEX desc_idx ON exif_parse USING btree (description)
---编辑2----
数据库包含以下格式的记录:
imaage_id exif_field description
我用描述作为搜索,所以它包含了从色调曲线(0,0,32,22,64,56,128,128,192,196,255,255)到镜头(宾得-F鱼眼1:3.5-4.5 17-28mm)的数据来制作(佳能EOS REBEL XSi)你应该看。你应该看。你可以创建这样的索引:
CREATE INDEX idx_exif_parse_description_vpo
ON exif_parse (lower(description) varchar_pattern_ops)
以下查询将花费毫秒完成:
SELECT count(*)
FROM "exif_parse"
WHERE (lower(description) LIKE 'canon')
FTS在这方面做得太过分了。您可以创建如下索引:
CREATE INDEX idx_exif_parse_description_vpo
ON exif_parse (lower(description) varchar_pattern_ops)
以下查询将花费毫秒完成:
SELECT count(*)
FROM "exif_parse"
WHERE (lower(description) LIKE 'canon')
FTS在这方面做得太过火了。FTS?通过创建一个特定的索引?@OMG Ponies:你应该给出答案?通过创建一个特定的索引?@OMG Ponies:你应该给出这样的答案,你有更好的例子吗?我浏览了这篇文档,做了一些谷歌的研究,但没有真正的帮助。我对PostgreSQL很陌生,来自MySQL。@Ben Dauphinee:这可能会有帮助-;如果有疑问,请查看支持选项-有邮件列表&IRC:您是否有更好的示例?我浏览了这篇文档,做了一些谷歌的研究,但没有真正的帮助。我对PostgreSQL很陌生,来自MySQL。@Ben Dauphinee:这可能会有帮助-;如有疑问,请检查支持选项-有邮件列表和IRC:这与“canon 5dkmii”的查询不匹配。对,要匹配这些查询,您只需添加一个通配符,即
像“canon%”
。这与“canon 5dkmii”的查询不匹配。对,要匹配这些查询,您只需添加一个通配符,例如,类似于“佳能%”
。