oracle多条件外连接执行计划

(1)
select host.id from itr_host_v host left join itr_ci_ref r on host.id = r .to_ci
and r.from_template_id =
'0301010101' ;


(2)
select host.id from itr_host_v host, itr_ci_ref r where host.id = r. to_ci(+)
and r.from_template_id(+) =
'0301010101';

(3)
select host.id from itr_host_v host, itr_ci_ref r where host.id = r. to_ci(+)
and r.from_template_id =
'0301010101';

(4)select host.id from itr_host_v host left join itr_ci_ref r on host.id = r .to_ci
where r.from_template_id =
'0301010101' ;

上面三条sql,1==2,不等于3。3==4;1是多条件的左外连接。4是单条件左外连接。

(1)、(2)的执行计划为

[img]http://dl.iteye.com/upload/attachment/0065/5166/310c3356-98d4-363a-adf9-af15712ccf02.jpg[/img]


(3)的执行计划为

[img]http://dl.iteye.com/upload/attachment/0065/5168/2625d8ca-54fe-35f3-b0ae-85544e78ca57.jpg[/img]

可以看到,3的sql里面,左外连接的条件失效了,这是因为条件里面多了一个 r.from_template_id = '0301010101';,字段r.from_template_id为被外连接的条件,必须要加上(+)才能使前面左外连接有效,否则,查看执行计划,就成了普通的内连接。有多个连接条件,必须全部加上(+).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值