我有一个查询:
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
答案 0 :(得分:1)
尝试在disease_table
上添加适当的索引,如下所示:
CREATE INDEX ON disease_table(disease_name, id);
看看是否能解决您的问题。