关于数据库外连接中的ON条件的先后顺序区别
最近在一项目中使用了数据库的左外连的一个情况:
比如 : select * from A
LEFT JOIN B
ON A.field = B.field
和
select * from A
LEFT JOIN B
ON B.field = A.field
上面这两条语句的区别(ON 的前后顺序区别)。
在这之前,个人一直以为是没有区别的,但这次领导对我说是有区别的,网上一直没查到到底有什么区别,郁闷中。。
大家来说说这两句到底有什么区别。。
------解决方案--------------------
1、首先要明白sql的执行的顺序的,首先执行from表,然后再on后表的条件,然后在左连接。
2、另外条件决先连接表中那个字段,具体还是要看一下执行计划的。
------解决方案--------------------
具体就是看执行计划,就知道区别在那了。
------解决方案--------------------
------解决方案--------------------应该是,对数据筛选有先后,执行效率问题吧
------解决方案--------------------............路过
------解决方案--------------------对于CBO的ORACLE来说,A.field = B.field 和B.field = A.field是完全一样的。
但是你需要确定的是,你领导是不是说下面的SQL有区别:)
select * from A
LEFT JOIN B
ON A.field = B.field
和
select * from B
LEFT JOIN A
ON B.field = A.field
------解决方案--------------------
------解决方案--------------------