

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Redshift 查询计划的 EXPLAIN 联接
<a name="explain-joins"></a>

Amazon Redshift 使用不同的联接运算符根据以下各项检索数据：
+ 所联接表的物理设计
+ 查询的结构
+ 联接所需数据的位置
+ 查询本身的具体要求

Amazon Redshift 中常用的联接类型如下：
+ **嵌套循环**：当无法在两个表之间创建哈希表时，就会出现嵌套循环。嵌套循环主要用于交叉联接（笛卡尔乘积）和一些不等式联接。这将要求数据库将左表中的每个值与右表中的每个值进行对比。嵌套循环联接的复杂性是“平方级”的，因为必须执行约 N\*N（或 N²）次不同的操作才能处理联接。嵌套循环是效率最低的联接类型。
+ **哈希联接**：在哈希联接中，联接条件并非彼此完全匹配，但 Amazon Redshift 只需稍作处理即可使用哈希联接管理。哈希联接通常比嵌套循环联接更快。Amazon Redshift 会查看两个表，并在它们之间创建一个哈希表（类似于位于两个表中间的查找表）。例如，如果联接列并非同时为分配键和排序键，联接表时可使用哈希联接和哈希运算符。
+ **合并联接**：合并联接通常是最快的联接，用于内部联接和外部联接。在合并联接中，两个表彼此完全匹配。这意味着两侧的联接条件是分配键和排序键。两个表完美对齐，无需任何调整。请注意，表中未排序的行应少于联接表的 20%。要查看未排序行的百分比，请查询 [SVV\_TABLE\_INFO](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_TABLE_INFO.html) 系统表。合并联接不用于完全联接。