JTYPE

指定联接算法是哈希联接还是合并联接。

使用 JTYPE 提示以指定优化器用来联接表数据的算法。如果指定算法不可行,优化器将忽略提示并发出警告。

语法

JOIN /*+JTYPE(join-type)*/

参数

联接类型
以下几项之一:
  • H:哈希联接

  • M:合并联接仅在联接列的输入均排序的情况下有效,否则 Vertica 会忽略并发出警告。优化器依靠查询或 DDL 来验证输入数据是否已排序,而不是依靠数据的实际运行时顺序。

  • FM:强制合并联接合并前,优化器会重新针对联接输入进行排序。联接列必须是相同的类型、精度或小数位数,但字符串列可以是不同的长度。

FM 的值仅对简单的联接状态有效。例如:

=> SELECT /*+SYNTACTIC_JOIN*/ * FROM x JOIN /*+JTYPE(FM)*/ y ON x.c1 = y.c1;

要求

  • 包含 JTYPE 提示的查询必须也包含 SYNTACTIC_JOIN 提示。否则,优化器会忽略 JTYPE 提示并抛出一条警告。

  • 联接语法必须符合 ANSI SQL-92 联接约定。