Oracle“(+)”运算符

塞卡

我正在检查一些旧的SQL语句,以记录它们并可能对其进行增强。

DBMS是Oracle

我不明白这样的声明:

select ...
from a,b
where a.id=b.id(+)

我对(+)运算符感到困惑,并且无法在任何论坛上找到它((在引号内搜索+也不起作用)。

无论如何,我使用了SQLDeveloper的“解释计划”,并且得到了这样的输出HASH JOIN, RIGHT OUTER,等等。

如果(+)在查询末尾删除运算符,会有什么区别在使用数据库之前,是否必须满足一些条件(例如具有一些索引等)(+)如果您可以为我提供一个简单的理解,或者可以从中获得一些不错的链接,这对我很有帮助。

谢谢!

OMG小马

这是OUTER JOIN的Oracle专用表示法,因为ANSI-89格式(在FROM子句中使用逗号分隔表引用)没有使OUTER联接标准化。

该查询将以ANSI-92语法重新编写为:

   SELECT ...
     FROM a
LEFT JOIN b ON b.id = a.id

该链接很好地解释了JOIN之间的区别


还应注意,即使可行(+)Oracle建议不要使用它

Oracle建议您使用FROM子句OUTER JOIN语法而不是Oracle join运算符。使用Oracle连接运算符的外部连接查询(+)受以下规则和限制的约束,这些规则和限制不适用于FROM子句OUTER JOIN语法:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章