这是Postgresql中的表:
"false"[1] // Is "a"
表的大小将超过1000万。我正在尝试执行name, ts, value
A, 2017-05-28, 1
A, 2017-05-27, 5
A, 2017-05-26, 2
...
B, 2017-05-28, 9
B, 2017-05-28, 12
...
,它花了我超过240秒而没有结束。任何人都可以就优化这种情况的方式提出一些建议,例如添加像Hive这样的分区或添加索引(需要是唯一的,但名称在多个记录中是重复的)。谢谢!
答案 0 :(得分:1)
出于某种原因,Postgres没有很好地优化count(distinct name)
。 (有趣的是,Hive - 它有一个非常不同的优化器 - 也有类似的问题。)
尝试以这种方式运行查询:
select count(*)
from (select distinct name
from t
) t;
我认为索引不会有帮助,但您可以尝试在t(name)
上使用索引。