如何使用重复值向列添加索引以使postgresql中的查询更快?

时间:2017-05-28 15:40:39

标签: sql postgresql indexing

这是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这样的分区或添加索引(需要是唯一的,但名称在多个记录中是重复的)。谢谢!

1 个答案:

答案 0 :(得分:1)

出于某种原因,Postgres没有很好地优化count(distinct name)。 (有趣的是,Hive - 它有一个非常不同的优化器 - 也有类似的问题。)

尝试以这种方式运行查询:

select count(*)
from (select distinct name
      from t
     ) t;

我认为索引不会有帮助,但您可以尝试在t(name)上使用索引。