日期:2014-05-17  浏览次数:21030 次

oracle外连接 (+)和left join 有效率区别吗
在公司写代码经常要用到左连接
大家对sql都不是很精通

有些同事却一直以(+)效率高为理由,提倡用(+)
他们认为这是oracle自己特有的语法,有经过优化
而且都说曾经比较过效率

个人坚持使用left join 
可读性高、功能更全面、通用性强、而且是新标准
很少使用(+),感觉不到有效率的差别,从执行计划上看也是相同的
而(+)这种语法也不能说是oracle的特有的,像sql server就有*=的用法
我觉得这是sql标准的区别

请教高手
如果有区别,麻烦举例
如果没区别,我改如何说服其他同事




------解决方案--------------------
left/right join等同于(+),前者是sql99标准,oracle 9i开始在逐渐取代(+)的方式 
------解决方案--------------------
MS木有区别,两者等价…
------解决方案--------------------
没区别啊 就是写发不一样而已
------解决方案--------------------
效率是一样的,个人推荐使用left/right join,可读性强。
因为你使用left/right join别人一看便知是左连接好是右连接,而对(+)还得"判断"下。
------解决方案--------------------
没什么区别。
------解决方案--------------------
真麻烦,开发人员不统一风格,以后维护会相当吃力。
------解决方案--------------------
好像推荐是用 标准sql写吧    其他数据库语言貌似不支持(+)
------解决方案--------------------
1楼是对的。我最近也刚好在看一本书。 from table_A left join table_B on (...)逐渐在取代原来orcle的老的(+)的写法。这样子写可以更加直观。效率方面我不清楚。但是oracle即便对它进行了优化,那么肯定也是9i以后写法要比9i以前的写法效率要好吧(这个逻辑符合生活常识,呵呵)。所以我个人建议left join写法。
------解决方案--------------------
没什么区别,统一风格
推荐是用 标准sql写吧