您的位置:首页 > 数据库 > Oracle

oracle-not in 和not exists的区别

2013-04-20 13:59 495 查看

oracle-not in 和not exists的区别

1.not in 和not exists效率上的区别

在查询语句中使用not in的时候会对内表进行全表扫描,没有用到索引。而not exists的子查询仍然会用到表上的索引。所以无论的大表还是小表,使用not exists都会比使用not in 要快。当然这的前提是表中有索引。

2.not in 和not exists结果上的区别

Query Q1

SELECT *

FROM UnitOfStudy

WHERE uosCode NOT IN (

SELECT mainUnit

FROM AcademicStaff

WHERE deptID = 'SIT' )

Query Q2

SELECT *

FROM UnitOfStudy u

WHERE NOT EXISTS (

SELECT *

FROM AcademicStaff

WHERE deptID='SIT' AND mainUnit=u.uosCode )

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

如果AcademicStaff 表中 有一条记录deptID = 'SIT',mainUnit = null。这个时候not in语句跑出来的结果将会是空的。而not exists结果会是正确的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: