首页新闻找找看学习计划

oracle 内联接时,用on 加条件 和不用on 有什么区别????

0
悬赏园豆:200 [已解决问题] 解决于 2014-05-09 08:39

select * from table1 inner join table2 on table1.id = table2.id
select * from table1,table2 where table1.id = table2.id

 

昨天不在公司,有个同事把,用ON的写法,改成 where加条件了,请问,这样效率更高吗?

左少白的主页 左少白 | 初学一级 | 园豆:22
提问于:2014-05-08 10:23
< >
分享
最佳答案
2

只是语法上的区别,第二种是旧的join语法,已经不提倡用了。

LZ可以参考下这个 http://stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax

补充一点:这两种方法没有性能上差别,生成的执行计划都一样。

收获园豆:100
nianhua11 | 小虾三级 |园豆:736 | 2014-05-08 10:31
其他回答(4)
0

用on是启发式连接,效率高,

不用on,而用where 是笛卡尔连接,效率可想而知

收获园豆:80
刘宏玺 | 园豆:14004 (专家六级) | 2014-05-08 10:44
0

自己测试一下

【秦时明月】 | 园豆:803 (小虾三级) | 2014-05-08 14:56

试过的,执行计划都是一样的

支持(0) 反对(0) 左少白 | 园豆:22 (初学一级) | 2014-05-08 15:04
0

1,on 是表关联用的,where是过滤条件用的。

2,语法不同。另外,理论上用on效率要高些,就你目前的sql语句(因为本来就不是很复杂)执行计划应该差不多。

收获园豆:10
小熊QQ糖 | 园豆:152 (初学一级) | 2014-05-08 15:24
0

个人觉得 用where 做连接可能隐式实现了inner join的功能 在效率在应该是对等 的 

收获园豆:10
Zery | 园豆:6069 (大侠五级) | 2014-05-08 21:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册