有什么办法让这个PostgreSQL计数查询更快?

时间:2010-06-08 19:09:34

标签: 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 btree (description)

---编辑2 ----

数据库包含以下格式的记录:

imaage_id    exif_field    description

我正在将描述作为搜索运行,因此它包含从色调曲线(0,0,32,22,64,56,128,128,192,196,255,255)到镜头(宾得)的数据-F FISH-EYE 1:3.5-4.5 17-28mm)制作(佳能EOS REBEL XSi)

2 个答案:

答案 0 :(得分:4)

你应该看看using FTS

答案 1 :(得分:2)

你可以像这样创建一个索引:

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对此有点过头了。