有学员在开发过程遇到下面类似SQL,执行效率比较差,我对SQL做了简化处理,如下:
select count(*)
from t1
left join t2 on t1.object_id...=t2.object_id
and t2.owner in (select username from t_users );
在12c之前,我希望得到3个表做hash join的执行计划,但是很遗憾...,不行,优化器只能生成如下执行计划(如果left join变成inner join,就能得到我想要的执行计划; 把 in 换成 exists ,也是一样的情况):
怎么办?...很简单的改写:
select
count(*) from t1 left join
(select * from t2 where t2.owner in (select username from...好消息就是,12c版本把这种情况考虑进去了,不需要改写,也能生成我想要的执行计划:
select count(*)
from t1
left join t2 on t1.object_id=t2.