1. EXISTS / NOT EXISTS 기본 개념
1) EXISTS
- 서브쿼리 결과가 1건이라도 존재하면 TRUE
- 즉,
- "이 조건을 만족하는 데이터가 있냐?"
2) NOT EXISTS
- 서브쿼리 결과가 1건도 없으면 TRUE
- 즉,
- "이 조건을 만족하는 데이터가 없냐?"
2. 비유로 더 쉽게 설명해 보기
당신이 어떤 이벤트에 참여했다고 가정하면:
A) NOT EXISTS
"어제 응모 명단을 확인했는데, 당신 이름이 없다"
=> 어제 응모 안 했네? 정상 처리.
B) EXISTS
"어제 응모 명단에 당신이 있다"
그 중에서도 win_yn='Y'이면
"당첨된 기록이 있네? 정상 처리."
win_yn='N'이면
"꽝이었네? 그럼 오늘 양말 응모했는지 더 확인해 보자."
이렇게 단계적으로 체크합니다.
3. 왜 EXISTS / NOT EXISTS 를 쓰나?
- SELECT COUNT(*)보다 빠르고 최적화가 잘 되어 있음
- 조건을 만족하는 row를 1건 찾으면 즉시 TRUE/FALSE를 결정하므로 효율적
- 특히 PK/Index가 있는 테이블 조회에 매우 적합
4. 결론 (아주 간단 요약)
문장의미
| EXISTS (서브쿼리) | 그 조건의 데이터가 있다 |
| NOT EXISTS (서브쿼리) | 그 조건의 데이터가 없다 |
현재 쿼리는
전날 응모했는지 / 당첨인지 / 꽝이면 오늘 다시 응모했는지
이 세 가지 케이스를 EXISTS / NOT EXISTS 조합으로 체크하는 구조입니다.
'Develop > Database & SQL' 카테고리의 다른 글
| [Oracle] 파티션 추가하기 (0) | 2024.07.30 |
|---|---|
| [Oracle] 서브쿼리 동작 방식을 제어하는 힌트들 (0) | 2024.06.28 |
| [MyBatis] jdbcType 종류 및 문법 (0) | 2024.03.18 |
| 오라클 랜덤 확률 가중치 (0) | 2023.04.26 |
| [PL/SQL] 무작정 시작하기 (0) | 2022.12.01 |