本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
解释亚马逊 Redshift 查询计划的加入情况
Amazon Redshift 使用不同的联接运算符根据以下内容检索数据:
-
正在连接的表的物理设计
-
查询的结构
-
联接所需的数据的位置
-
查询本身的具体要求
亚马逊 Redshift 中常用以下联接类型:
-
嵌套循环 — 当无法在两个表之间创建哈希表时,就会出现嵌套循环。嵌套循环主要用于交叉连接(笛卡尔积)和一些不等式连接。这将要求数据库将左表中的每个值与右表中的每个值进行比较。嵌套循环联接的复杂性是 “二次的”,因为必须执行大约 N*N(或 N²)不同的操作才能处理连接。嵌套循环是最不理想的联接类型。
-
哈希联接 — 在哈希联接中,连接条件并不适合彼此,但是 Amazon Redshift 只需稍加工作即可使用哈希联接进行管理。哈希连接通常比嵌套循环连接更快。Amazon Redshift 会查看两个表,并在它们之间创建一个哈希表,它就像位于表中间的查找表。例如,当联接列既不是分配键又是排序键的表时,会使用哈希联接和哈希运算符。
-
合并联接-合并联接通常是最快的联接,用于内部联接和外部联接。在合并联接中,两个表非常适合彼此。这意味着两边的连接条件是分配键和排序键。两张桌子都完美排列,无需调整。请注意,表中未排序的行应小于联接表的 20%。要查看未排序行的百分比,请查询 SVV_TABLE_ INFO 系统表。合并联接不用于完全联接。