是否可以使用GROUPBY和COUNT(*)创建比原始数据更多的行?

时间:2015-07-20 14:30:43

标签: sql

我有以下查询:

SELECT "domain", site_domain, pageurl, count (*) FROM impressions WHERE imp_date > '20150718' AND insertion_order_id = '227363'
GROUP BY 1,2,3

我理解这是一个错误构思的查询,但运行时间超过30分钟,只需在没有countgroupby的情况下提取数据只需20秒。

我的问题是,是否可能创建的行数比原始数据集多?

谢谢!

1 个答案:

答案 0 :(得分:0)

当两个条件为真时,聚合查询返回更多行的唯一时间是原始数据集:

  • 查询中没有匹配的行。
  • 没有group by

在这种情况下,聚合查询返回一行;没有聚合,你就没有行。

否则,GROUP BY 行组合在一起,因此结果不能大于原始数据。

当您比较返回结果集所花费的时间时,您需要区分时间到第一行和时间到最后一行。当您执行简单的SELECT时,您倾向于测量返回的第一行的时间。但是,group by需要在返回任何行之前处理所有数据(在大多数情况下)。因此,最好将时间与简单查询返回的 last 行进行比较。