我有这样的查询:
SELECT disease_name, COUNT(DISTINCT id)
FROM disease_table
GROUP BY disease_name
其中每个 disease_name 都有一个关联的标识符,并且同一标识符可能会多次出现疾病。
这行得通,但大约需要 7 秒才能运行。
如果我运行这个查询:
SELECT disease_name, COUNT(disease_name)
FROM disease_table
GROUP BY disease_name
需要 321 毫秒,但重复的行(具有相同 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
最佳答案
尝试在 disease_table
上添加一个合适的索引,如下所示:
CREATE INDEX ON disease_table(disease_name, id);
看看这是否解决了您的问题。
关于postgresql - SQL 计数不同 ID 太慢(~7 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594455/