在Amazon Redshift文档中,他们建议订购ORDERBY和GROUPBY条款:
如果同时使用GROUP BY和ORDER BY子句,请确保在两者中按列顺序排列。也就是说,使用以下方法:
group by a, b, c
order by a, b, c
不要使用这种方法:
group by b, c, a
order by a, b, c
来源:http://docs.aws.amazon.com/redshift/latest/dg/c_designing-queries-best-practices.html
他们不解释原因!有没有人有任何想法?
答案 0 :(得分:3)
GROUP BY
隐式要求对数据进行排序。如果您的ORDER BY
不同,则必须将数据排序 两次 。
而且,由于Redshift在多个节点之间分发数据,这可能意味着数据必须发送到所有节点两次。
如果GROUP BY
返回的数据集很小(10行或100行),您将不会注意到,但如果它很大(数百万行),它将会非常慢