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

前端之家收集整理的这篇文章主要介绍了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()连接,而内部连接更符合风格.

猜你在找的Oracle相关文章