【发布时间】:2021-10-17 09:55:39
【问题描述】:
我在 Redshift 实例中有一个表 [order],行数为 780 000。
在表上运行以下 group by 子句需要 60 多秒。
在 MSSQL 中,完全相同的查询需要 1 秒。
任何关于 Redshift 为什么需要这么长时间以及如何改进查询的建议都将不胜感激。
select
salesorderid
,max(orderid) as max_order_id
,min(latestdelivery) as min_latestdelivery
,max(latestdelivery) as max_latestdelivery
,min(sourceid) as min_sourceid
,max(sourceid) as max_sourceid
,min(salesitem) as min_salesitem
,max(salesitem) as max_salesitem
,min(qty) as min_qty
,max(qty) as max_qty
,min(weight) as min_weight
,max(weight) as max_weight
,min(refb) as min_refb
,max(refb) as max_refb
,min(blocked) as min_blocked
,max(blocked) as max_blocked
,min(updatemode) as min_updatemode
from public.order o
where o.datecreated >= getdate() - interval '24 month'
group by salesorderid;
解释:
XN HashAggregate (cost=35513.57..52310.29 rows=419918 width=99)
-> XN Seq Scan on "order" o (cost=0.00..9738.60 rows=606470 width=99)
Filter: (datecreated >= '2019-10-17 11:52:14'::timestamp without time zone)
【问题讨论】:
-
您是如何插入数据的?用什么命令?
-
桌子上的 SORTKEY 是什么?
-
@JohnRotenstein +1 - 还有:DISTKEY 是什么?
-
你的
salesorderids 是独一无二的吗? -
很遗憾我没有插入数据,所以我无法提供插入命令。 SORTKEY 已启用(salesorderid,datecreated)。 DISTKEY 已启用(创建日期)。 salesorderis 不是唯一的。
标签: amazon-web-services group-by amazon-redshift query-optimization