有什么方法可以加快PostgreSQL计数查询的速度?

有什么方法可以加快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

我正在一个720万行的表上运行不区分大小写的搜索,我想知道是否有任何方法可以使这个查询更快

目前,仅使用一个搜索参数执行大约需要11.6秒,我担心一旦添加多个参数,此查询将变得非常缓慢

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”的查询不匹配。对,要匹配这些查询,您只需添加一个通配符,例如,
类似于“佳能%”