从AWS文档中: 合并加入
通常,最快的联接是将合并联接用于内部联接和外部联接。合并联接不用于完全联接。 当联接表既是联接键又是分配键又是排序键的表时,以及少于20%的联接表未排序时,使用此运算符。它按顺序读取两个排序的表并找到匹配的表行。要查看未排序的行的百分比,请查询SVV_TABLE_INFO系统表。
我正在测试的联接:
select *
FROM d2l.tbl1 r
JOIN d2l.tbl2 rc
ON r.sortkey1_field = rc.sortkey1_field
SVV_TABLE_INFO详细信息:
执行计划:
在进行解释之前,我已经完全清理并分析了两个表。
此外,按照AWS文档distyle,所有对象都应与具有相同distkey的两个对象相同。尽管如此,我还是在给定的join字段上使用distkey重新创建了表,但仍然没有在说明计划中进行合并。
有人可以解释正在发生的事情,或者至少需要进行什么更改才能使其成为合并联接?
答案 0 :(得分:1)
合并联接要求两个表都使用具有相同键的DIST STYLE KEY进行分发。两个表上SORT KEY的第一列也必须与DIST KEY相同。合并联接还需要更新统计信息/真空。
在您的情况下不起作用的原因是两个表都使用DISTSTYLE ALL分发。