多次计数(DISTINCT(..))的计算

时间:2018-02-13 09:41:49

标签: postgresql

我有以下表格架构

Select count(*) from hive_database.hive_table;

我正在使用以下查询来对数据执行聚合

CREATE TABLE dummy (
  id1 INTEGER NOT NULL,
  id2 DATE NOT NULL,
  id3 INTEGER,
  val1 DOUBLE PRECISION,
  val2 DOUBLE PRECISION,
);

因为 count(DISTINCT(id1,id2))表达式在select子句中出现两次会被计算两次吗?

表的大小> 10百万。

以下查询的表现会比之前的表现好吗?

SELECT sum(val1)/count(DISTINCT(id1, id2)), sum(val2)/count(DISTINCT(id1, id2))
FROM dummmy
WHERE id1 IN (....) AND id2 IN (....)
GROUP BY id3;

我正在使用postgresql-9.6

感谢您的期待!

1 个答案:

答案 0 :(得分:0)

第二个查询的性能将优于或等于第一个查询的性能,因为每个表达式只会被评估一次,但我不知道差异是否显着。

您应该使用EXPLAIN测试并检查执行计划。

相关问题