使用exists
使用exists代替in
1exists只檢查行的存在性,in 檢查實際的值,所以existsd的效能比in好
驗證

select * from emp 
where deptno in(select  deptno from dept where   loc='NEW YORK');

select * from emp e
where  exists(select 1 from dept d where d.deptno=e.deptno and loc='NEW YORK');


這裡寫圖片描述
使用exists代替distinct
1exists只檢查行的存在性,distinct用於禁止重複行的顯示,而且distinct在禁止重複行的顯示前需要排序檢索的行,所以exists的效能比distinct好
驗證

select distinct e.deptno,d.dname  from emp e,dept d
where e.deptno=d.deptno;

select  d.deptno,d.dname  from dept d
where exists(select 1 from emp e where e.deptno=d.deptno);

這裡寫圖片描述

.