猿问

Oracle“(+)”运算符

Oracle“(+)”运算符

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

DBMS是Oracle

我不明白有一句话是这样写的:

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

我很困惑(+)接线员,在任何论坛上都找不到.(在引号中搜索+也不起作用)。

总之,我使用了SQLDeveloper的“解释计划”,我得到了一个输出,它说HASH JOIN, RIGHT OUTER

如果我删除(+)查询结束时的操作符?数据库是否必须满足某些条件(例如有一些索引等)以前(+)可以用吗?如果你能给我一个简单的理解,或者一些我可以阅读到的好链接,那将是非常有帮助的。

谢谢!


慕尼黑8549860
浏览 1068回答 3
3回答

互换的青春

(+)运算符指示外部联接。这意味着即使没有匹配,Oracle仍将从连接的另一端返回记录。例如,如果a和b是emp和dept,并且您可以让员工不被分配到某个部门,那么下面的语句将返回所有员工的详细信息,不管他们是否已被分配到某个部门。select * from emp, dept where emp.dept_id=dept.dept_id(+)因此,简而言之,删除(+)可能会产生显着性差异,但根据您的数据,您可能有一段时间没有注意到!
随时随地看视频慕课网APP
我要回答