1. EXISTS란 무엇인가?
EXISTS는 서브쿼리 내 조건에 맞는 데이터가 존재하는지 여부를 판단하는 논리 연산자입니다.
- 서브쿼리가 하나라도 결과를 반환하면 TRUE
- 결과가 없으면 FALSE
즉, 메인 쿼리에서 특정 조건을 만족하는 데이터가 서브쿼리에 존재할 때만 해당 행을 선택할 수 있도록 도와줍니다.
2. EXISTS vs IN vs JOIN
- EXISTS는 서브쿼리 결과가 존재하는지만 체크하기 때문에 데이터가 많아도 효율적일 때가 많습니다.
- IN은 서브쿼리 결과 전체를 비교하기 때문에 경우에 따라 성능 차이가 있습니다.
- JOIN은 두 테이블을 결합해서 결과를 만듭니다. 목적과 상황에 따라 적절히 선택하세요.
- 상황에 따라 사용하는 법은 확실히 다르다.
3. 예제
예제 상황
- Employees 테이블: 사원 정보
- Orders 테이블: 주문 정보 (사원별 주문 기록 있음)
- "주문이 있는 사원 목록"을 조회
sql
SELECT EmployeeID, FirstName, LastName
FROM Employees E
WHERE EXISTS (
SELECT 1
FROM Orders O
WHERE O.EmployeeID = E.EmployeeID
);
FROM Employees E
WHERE EXISTS (
SELECT 1
FROM Orders O
WHERE O.EmployeeID = E.EmployeeID
);
4. 참고 팁
- EXISTS 서브쿼리는 조건만 충족하면 바로 TRUE를 반환하기 때문에, 실제 데이터를 모두 읽지 않아 효율적입니다.
- 복잡한 서브쿼리 조건에도 활용 가능하며, 조건에 따라 인덱스 활용 시 성능이 매우 좋아집니다.
'프로그래밍 > DB(데이터베이스)' 카테고리의 다른 글
| UNION, UNION ALL 차이 및 사용하기 (2) | 2025.08.12 |
|---|---|
| IF NOT EXISTS 사용하기 (5) | 2025.08.12 |
| MSSQL 소수점 절삭 버림 (0) | 2023.10.19 |
| MSSQL 날짜 타입 변경 (0) | 2023.05.04 |
| MSSQL DateAdd 사용하기~ (0) | 2015.11.06 |