oracle exsits 限制,oracle exists原理

当前位置:我的异常网» 热门搜索 » oracle exists原理

oracle exists原理

www.myexceptions.net  网友分享于:2013-12-05   搜索量:8次

场景:oracle in跟exists、not in和not exists原理和性能探究

oracle in和exists、not in和not exists原理和性能探究

对于in和exists、not in和not exists还是有很多的人有疑惑,更有甚者禁用not in,所有的地方都要用not exists,它真的高效吗?通过下面的使用我们来证明。

先制造一些数据

SQL> drop table test1 purge;

SQL> drop table test2 purge;

SQL> create table test1 as select * from dba_objects where rownum <=1000;

SQL> create table test2 as select * from dba_objects;

SQL> exec dbms_stats.gather_table_stats(user,'test1');

SQL> exec dbms_stats.gather_table_stats(user,'test2');

SQL> set autotrace traceonly

in和exists原理及性能实验:

SQL> select * from test1 t1 where t1.object_id in (select t2.object_id from test2 t2);

已选择1000行。

执行计划

----------------------

Plan hash value: 3819917785

----------------------------------------

| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------

|   0 | SELECT STATEMENT   |       |   997 | 84745 |   168   (3)| 00:00:03 |

|*  1 |  HASH JOIN SEMI    |       |   997 | 84745 |   168   (3)| 00:00:03 |

|   2 |   TABLE ACCESS FULL| TEST1 |  1000 | 80000 |     5   (0)| 00:00:01 |

|   3 |   TABLE ACCESS FULL| TEST2 | 50687 |   247K|   162   (2)| 00:00:02 |

----------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")

统计信息

----------------------

1  recursive calls

0  db block gets

95  consistent gets

0  physical reads

0  redo size

45820  bytes sent via SQL*Net to client

1111  bytes received via SQL*Net from client

68  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

1000  rows processed<

你可能感兴趣的:(oracle,exsits,限制)