Redshift调整连接

时间:2018-02-05 13:09:48

标签: sql join amazon-redshift query-performance

我正在尝试在redshift中加入两个表。一大一小。连接是通过它们的id,我已经通过列(用于连接)在集群上分发了大的连接,并且我也将此列用作sortkey。我在所有节点上整体分发的小表,并使用sortkey和用于连接的列。

示例:

create table table_small diststyle all SORTKEY(id) as select * from another_small_table;

create table big_table distkey (id) diststyle key SORTKEY(id) as SELECT * from another_big_table;

explain SELECT * FROM big_table big JOIN small_table small ON big.id = small.id;

查询计划说redshift正在进行散列连接而不是合并连接。这是预期的行为?我期待合并加入。

1 个答案:

答案 0 :(得分:1)

根据

https://docs.aws.amazon.com/redshift/latest/dg/c-the-query-plan.html

  

合并加入

     

通常是最快的连接,合并连接用于内部连接和   外连接。合并连接不用于完整连接。这个运营商   在连接连接列所在的表时使用   分配键和排序键,当不到20%时   连接表是未排序的。它按顺序读取两个排序表   找到匹配的行。要查看未排序行的百分比,请查询   SVV_TABLE_INFO系统表。

所以 - 因为你没有(id)的分发键,所以不会使用这个连接类型。