使用 ORDERED 连接顺序伪指令强制优化程序以它们在查询的 FROM 子句中出现的顺序连接表或视图。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
comments | 用于记录伪指令的文本 | 必须出现在注释符号之间 | 字符串 |
SELECT --+ ORDERED name, title, salary, dname FROM dept, job, emp WHERE title = 'clerk' AND loc = 'Palo Alto' AND emp.dno = dept.dno AND emp.job= job.job;
因为在表 dept 和表 job 之间没有出现谓词,所以这个查询强制数据库服务器构造一个笛卡尔积。
如果在创建视图时使用 ORDERED 伪指令,基表就以视图定义的顺序相邻连接。
对于后面所有关于视图的查询,数据库服务器以视图定义中指定顺序相邻地连接基表。当使用在视图中时,ORDERED 伪指令不影响查询中的 FROM 子句命名的其它表的连接顺序。
当在使用视图的查询中指定 ORDERED 连接顺序伪指令时,所有表都以指定顺序连接,即使 是组成视图的那些表。如果视图包含在查询中,基表就以视图定义的顺序相邻地连接。ORDERED 用于示例的例子,可以参考 GBase 8s 性能指南 。
因为 OUTER 连接的顺序要求,在符合 ANSI 的连接查询中,指定 RIGHT OUTER JOIN 或 FULL OUTER JOIN 关键字,忽略 ORDERED 连接顺序伪指令,但它在解释输出文件中的 Directives Not Followed 下列出。