EXISTS는 서브쿼리의 결과가 “한 건이라도 존재하면” TRUE 없으면 FALSE를 리턴
EXISTS는 서브 쿼리에 일치하는 결과가 한 건이라도 있으면 쿼리를 더 이상 수행하지 않는다.
EX)
SELECT a.emp_no, a.name, a.deptno
FROM emp a
where a.job = "MANAGER'
AND NOT EXISTS(SELECT 1
FROM dept_history aa
WHERE aa.empno = a.empno)
→ dept_hisotry 테이블에 데이터가 존재하지 않는 값만 조회된다.
IN과 EXISTS의 차이
- IN은 서브쿼리 결과를 모두 수행하고, EXISTS는 일치하는 결과가 있으면 더 이상 수행하지 않는다.
- 서브 쿼리 테이블(dept_history)에 데이터량이 많으면 EXISTS를 사용하는 것이 성능이 좋다.
— 보통 결과 값은 같음, 성능의 차이
'DB' 카테고리의 다른 글
| FETCH / OFFSET (0) | 2022.10.24 |
|---|---|
| COALESCE (0) | 2022.10.24 |
| 테이블 컬럼 카멜 표기법 변환기 (0) | 2022.10.24 |
| Mybatis 동적쿼리 <trim> 개념 및 문법 총 정리 (0) | 2022.10.24 |
| PL/SQL에 Excel Import (0) | 2022.10.24 |