SQL计数不同的id太慢(约7秒)

时间:2017-08-09 15:09:44

标签: postgresql

我有一个查询:

SELECT disease_name, COUNT(DISTINCT id)
FROM disease_table
GROUP BY disease_name

其中每个disease_name都有一个关联的标识符,并且对于相同的标识符,可能会多次出现疾病。

这很有效,但大概 7s才能运行

如果我运行此查询:

SELECT disease_name, COUNT(disease_name)
FROM disease_table
GROUP BY disease_name

它需要 321ms ,但重复行(具有相同ID的相同疾病)不止一次计数。

是否有更有效的方法来实现第一个查询的结果,与第二个只使用SQL的时间差不多?

表格

disease_name     |         id
------------     |    -------------  
dis_1                      123
dis_1                      104
dis_1                      104
dis_32                     123
dis_12                     123
dis_12                     115

预期:

disease_name     |        count
------------     |    -------------  
dis_1                      2
dis_32                     1
dis_12                     2

其中dis_1有3个条目,但只计算两次,因为这3个条目中有两个具有相同的ID

1 个答案:

答案 0 :(得分:1)

尝试在disease_table上添加适当的索引,如下所示:

CREATE INDEX ON disease_table(disease_name, id);

看看是否能解决您的问题。