oracle中的exists 和not exists 用法详解
2017-12-07 18:31
507 查看
oracle中的exists 和not exists 用法详解
oracle中的exists 和not exists 用法详解有两个简单例子,以说明 “exists”和“in”的效率问题
1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;
T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高。
2) select * from T1 where T1.a in (select T2.a from T2) ;
T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高。
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为 1 A1 2 A2 原因可以按照如下分析 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据 NOT EXISTS 就是反过来 SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为 3 A3
相关文章推荐
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解 (和in)
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists和not exists和in用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解
- oracle中的exists 和not exists 用法详解