oracle not exists 很慢,Oracle not exists的等价写法

not exists可以改为left join + is null,可以看到改写前后执行计划一样,消耗资源一样,说明完全等价。

SQL> drop table test purge;

SQL> drop table test1 purge;

SQL> create table test as select * from dba_objects;

SQL> create table test1 as select * from dba_objects;

SQL> delete from test1 where rownum < 10;

SQL> commit;

SQL> select count(1) from test t where not exists(

select 1 from test1 t1 where t1.object_id=t.object_id

);

COUNT(1)

----------

11

SQL> select count(1) from test t,test1 t1 where t.object_id=t1.object_id(+)

and t1.object_id is null;

COUNT(1)

----------

11

SQL> select * from test t where not exists(

select 1 from test1 t1 where t1.object_id=t.object_id

)

minus

select t.* from test t,test1 t1 where t.object_id&#

你可能感兴趣的:(oracle,not,exists,很慢)