包括 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 式外部联接(这些联接包含 '+' 符号)。