我正在检查一些旧的SQL语句,以记录它们并可能对其进行增强。
DBMS是Oracle
我不明白这样的声明:
select ...
from a,b
where a.id=b.id(+)
我对(+)
运算符感到困惑,并且无法在任何论坛上找到它((在引号内搜索+也不起作用)。
无论如何,我使用了SQLDeveloper的“解释计划”,并且得到了这样的输出HASH JOIN, RIGHT OUTER
,等等。
如果(+)
在查询末尾删除运算符,会有什么区别?在使用数据库之前,是否必须满足一些条件(例如具有一些索引等)(+)
?如果您可以为我提供一个简单的理解,或者可以从中获得一些不错的链接,这对我很有帮助。
谢谢!
这是OUTER JOIN的Oracle专用表示法,因为ANSI-89格式(在FROM子句中使用逗号分隔表引用)没有使OUTER联接标准化。
该查询将以ANSI-92语法重新编写为:
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id
还应注意,即使可行(+)
,Oracle建议不要使用它:
Oracle建议您使用
FROM
子句OUTER JOIN
语法而不是Oracle join运算符。使用Oracle连接运算符的外部连接查询(+)
受以下规则和限制的约束,这些规则和限制不适用于FROM
子句OUTER JOIN
语法:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句