oracle 用EXISTS替代IN

在许多基于基础表的查询中,为了知足一个条件,每每须要对另外一个表进行联接.在这种状况下, 使用EXISTS(或NOT EXISTS)一般将提升查询的效率.ide

 低效:it

SELECT *class

FROM EMP (基础表)效率

WHERE EMPNO > 0基础

AND DEPTNO IN (SELECT DEPTNO查询

FROM DEPTdi

WHERE LOC = ‘MELB’)view

    高效:vi

SELECT *co

FROM EMP (基础表)

WHERE EMPNO > 0

AND EXISTS (SELECT ‘X’

FROM DEPT

WHERE DEPT.DEPTNO = EMP.DEPTNO

AND LOC = ‘MELB’)

( 相对来讲,用NOT EXISTS替换NOT IN 将更显著地提升效率)