即使加入了Dist Key和Sort Key列,Amazon Redshift也会加入Hash Join

时间:2015-03-31 23:28:12

标签: sql join amazon-web-services hash amazon-redshift

我在Redshift中有一个事实表,其中包含大约13亿行DISTribution键c1和排序键c1,c2。

我需要将这个表与c1上的join子句连接起来(例如,来自表的第一个实例的c1 =来自表的第二个实例的c1)。

当我看到查询的查询计划时,Redshift似乎正在使用DS_DIST_NONE进行哈希联接。虽然期望DS_DIST_NONE,因为我在列c1上有dist键和排序键,但我希望Redshift执行Merge Join而不是Hash Join(同样是因为同样的原因)。

我认为这会减慢我的查询速度。

任何人都可以解释为什么Redshift可能正在进行Hash Join而不是Merge Join(即使我在加入列上同时拥有DIST Key和SORT键)并且Redshift正在为查询执行DS_DIST_NONE?

1 个答案:

答案 0 :(得分:3)

事实证明,由于我们没有按照排序顺序在表中插入数据(由该表的Sort Key定义),而Redshift不会自动保持表的排序按排序键排序,所以没有办法Redshift在我们的桌子上执行Merge Join。在桌面上运行完全真空后,Redshift开始执行合并加入