指定联接顺序

包括 ORDERED 指令以指示查询优化器按照其在 FROM 子句中列出的顺序联接表。如果没有包括 ORDERED 关键字,则查询优化器将选择联接表的顺序。

例如,以下命令允许优化器选择FROM 子句中列出的顺序联接表:

SELECT e.ename, d.dname, h.startdate
  FROM emp e, dept d, jobhist h
  WHERE d.deptno = e.deptno
  AND h.empno = e.empno;

以下命令指示优化器按指定的顺序联接表:

SELECT /*+ ORDERED */ e.ename, d.dname, h.startdate
  FROM emp e, dept d, jobhist h
  WHERE d.deptno = e.deptno
  AND h.empno = e.empno;

在命令的 ORDERED 版本中,PolarDB PostgreSQL版(兼容Oracle)将首先联接 emp e 与 dept d,然后将结果与 jobhist h 联接。如果没有 ORDERED 指令,联接顺序由查询优化器进行选择。

说明

ORDERED 指令不适用于 Oracle 式外部联接(这些联接包含 '+' 符号)。