= 谓词,例如 A.a = B.a),不支持范围连接和 NULL-safe 等值连接(<=>)。ENUM 或 SET。<=>(NULL-safe 等值比较)。>、<、BETWEEN)。merge_join、libra_smj、use_merge,参数为参与 Join 的表名或别名列表。orders 与 lineitem 走 Merge JoinSELECT /*+ merge_join(o, l) */ *FROM orders o, lineitem lWHERE o.o_orderkey = l.l_orderkey;
SELECT /*+ libra_smj(o, l) */ * FROM orders o, lineitem l WHERE o.o_orderkey = l.l_orderkey;SELECT /*+ use_merge(o, l) */ * FROM orders o, lineitem l WHERE o.o_orderkey = l.l_orderkey;
no_use_merge:SELECT /*+ no_use_merge(o, l) */ *FROM orders o, lineitem lWHERE o.o_orderkey = l.l_orderkey;
EXPLAIN 命令查看 Join 算子,若实际选用了 Merge Join,输出中将包含 MergeJoin_* 字样:EXPLAIN SELECT /*+ merge_join(o, l) */ *FROM orders o, lineitem lWHERE o.o_orderkey = l.l_orderkey;
SHOW WARNINGS 查看原因。文档反馈