合并联接无法按记录的Redshift运作

时间:2018-09-14 15:26:30

标签: sql join amazon-redshift sql-execution-plan

从AWS文档中: 合并加入

  

通常,最快的联接是将合并联接用于内部联接和外部联接。合并联接不用于完全联接。 当联接表既是联接键又是分配键又是排序键的表时,以及少于20%的联接表未排序时,使用此运算符。它按顺序读取两个排序的表并找到匹配的表行。要查看未排序的行的百分比,请查询SVV_TABLE_INFO系统表。

我正在测试的联接:

select *  
FROM d2l.tbl1 r
JOIN d2l.tbl2 rc
ON r.sortkey1_field = rc.sortkey1_field 

SVV_TABLE_INFO详细信息:

SVV_TABLE_INFO details

执行计划:

Explan Plan

在进行解释之前,我已经完全清理并分析了两个表。

此外,按照AWS文档distyle,所有对象都应与具有相同distkey的两个对象相同。尽管如此,我还是在给定的join字段上使用distkey重新创建了表,但仍然没有在说明计划中进行合并。

有人可以解释正在发生的事情,或者至少需要进行什么更改才能使其成为合并联接?

1 个答案:

答案 0 :(得分:1)

合并联接要求两个表都使用具有相同键的DIST STYLE KEY进行分发。两个表上SORT KEY的第一列也必须与DIST KEY相同。合并联接还需要更新统计信息/真空。

在您的情况下不起作用的原因是两个表都使用DISTSTYLE ALL分发。