【发布时间】:2017-07-27 13:27:22
【问题描述】:
我在 AWS redshift 中有 2 个表。详情如下
a) 展示次数(计算特定广告的展示次数)
- 行数(1.7 亿)
- 分发密钥(ad_campaign)
- 排序键(created_on)
b) 点击次数(计算特定广告的点击次数)。
- 行数(8000 万)
- 分发密钥(ad_campaign)
- 排序键(created_on)
我有一个带有 2 个切片的 DC1 大型集群。
我正在尝试运行以下查询
select impressions.offer_id, count(imp_cnt) from
bidsflyer.tblImpressionLog_Opt impressions
full join bidsflyer.tblTrackingLinkLog_Opt clicks
on impressions.offer_id=clicks.offer_id and date_trunc('week',
impressions.created_on)=date_trunc('week', clicks.created_on)
where impressions.created_on >= '2017-07-27 00:00:00'
group by 1
此查询需要 8 分钟以上才能运行。考虑到数据量,我认为这是相当大的,我觉得数据量并不大。
查询计划如下所示
XN HashAggregate (cost=2778257688268.43..2778257688268.60 rows=67 width=12)
-> XN Hash Left Join DS_DIST_NONE (cost=179619.84..2778170875920.65 rows=17362469555 width=12)
Hash Cond: (("outer".offer_id = "inner".offer_id) AND (date_trunc('week'::text, "outer".created_on) = date_trunc('week'::text, "inner".created_on)))
-> XN Seq Scan on tblimpressionlog_opt impressions (cost=0.00..724967.36 rows=57997389 width=20)
Filter: (created_on >= '2017-07-27 00:00:00'::timestamp without time zone)
-> XN Hash (cost=119746.56..119746.56 rows=11974656 width=12)
-> XN Seq Scan on tbltrackinglinklog_opt clicks (cost=0.00..119746.56 rows=11974656 width=12)
谁能指导我正确使用分配键和排序键。
我应该如何设计我的查询?
【问题讨论】:
-
如果速度是重中之重,我强烈建议您使用至少 2 个节点。
标签: amazon-redshift