微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle官方有关使用显式ANSI JOINs和隐式联接的建议吗?

注意:我不是要你告诉我“使用明确的联接”,而是寻找甲骨文的官方职位,如果有的话.

From Oracle database documentation(也出现在9i和11g文件中):

Oracle recommends that you use the FROM clause OUTER JOIN Syntax
rather than the Oracle join operator. Outer join queries that use the
Oracle join operator (+) are subject to the following rules and
restrictions […]

换句话说,甲骨文建议更喜欢这两种形式中的第一种:

FROM a LEFT JOIN b ON b.x = a.x
vs
FROM a,b WHERE b.x(+) = a.x

然而,我从来没有在任何Oracle文档中找到一个建议,最好使用这两种形式之一:

FROM a INNER JOIN b ON b.x = a.x
vs
FROM a,b WHERE b.x = a.x

有没有一个我错过的段落?

如果有的话我没有看到优选外部联接的ANSI语法(除了非标准,特定于Oracle的()符号)的原因是使用ANSI语法可以更好地表达外部联接.限制“ORA-01417:表可能外部连接到最多一个其他表”适用于()外连接,但不适用于ANSI外连接.不适用于ANSI外部联接的其他对()的限制是 documented here.

一位受人尊敬的Oracle专家实际上建议坚持使用内部联接的旧语法 – 参见Jonathan Lewis’s blog.他表示,ANSI连接将转换为传统的Oracle连接.我不同意他100%(我更喜欢ANSI加入我自己一般),但不会声称有一小部分他的知识的话题.

简而言之,ANSI外部连接在技术上优于old()连接,而内部连接更符合风格.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐