当前位置: 代码迷 >> Oracle管理 >> 这两种SQL语句写法有何不同,哪种效率高?解决办法
  详细解决方案

这两种SQL语句写法有何不同,哪种效率高?解决办法

热度:90   发布时间:2016-04-24 04:20:46.0
这两种SQL语句写法有何不同,哪种效率高?
1、
select *
from A join B on A.id=B.id
where A其他条件 and B其他条件

2、
select *
from A,B
where A.id=B.id
and A其他条件 and B其他条件

这两种写法有什么区别?
------解决方案--------------------
没有区别,执行计划应该也是一样的。
------解决方案--------------------
从关联角度看效率是一样的,不过加上其他条件的时候就要具体分析了。
------解决方案--------------------
引用:
实际使用中,我感觉好像第二种执行快些,不知怎么回事。

你看看是不是其他条件影响的,查一下具体的执行计划。
------解决方案--------------------
尽量使用Join 而不是Where来列出关联条件,特别是多个表联合的时候。
原因是:
       1)在效率上,Where可能具有和Inner join一样的效率。但基本可以肯定的是Join的效率不比Where差。
       (2)使用Join可以帮助检查语句中的无效或者误写的关联条件
------解决方案--------------------
建议使用1而不是2;
可以看一下执行计划:explain一下;
------解决方案--------------------
我刚才在本地测试了一下,11g的,两种方式完全一样,连解释计划都一样
------解决方案--------------------
不知道是习惯还是什么,1看着就不爽
  相关解决方案