SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

집합 연산·EXISTS로 Sort와 중복 제거 줄이기

원래 이론 →

판단 기준

잘못된 판단정확한 기준
UNION ALL은 언제나 UNION과 같다중복 보존 여부가 다름
Branch 조건이 달라 보이면 상호 배타적경계·NULL·동시 만족 검증 필요
NOT(condition)이면 NULL까지 안전하게 제외UNKNOWN은 TRUE가 아니므로 LNNVL 등 검토
EXISTS는 오른쪽 Match 수만큼 왼쪽을 반복존재 여부만 판단하는 Semi Join 의미
Join + DISTINCT는 항상 EXISTS로 변경 가능왼쪽 중복·반환 Column·Outer Join 의미 확인
NOT IN과 NOT EXISTS는 항상 같다Subquery NULL과 왼쪽 NULL 주의
MINUS와 NOT EXISTS는 항상 같다MINUS는 왼쪽 중복 제거, NOT EXISTS는 보존 가능
INTERSECT와 EXISTS는 항상 같다INTERSECT는 Set 중복 제거
UNION ALL이면 Sort가 전혀 없음Branch 내부·최종 ORDER BY Sort는 남을 수 있음
DISTINCT 제거 후 Row 수만 같으면 안전Key별 중복·NULL·Column 값도 비교

이 부분의 원문 →

헷갈리는 개념

각 Branch가 100만 행을 반환한다고 가정합니다.

도식
UNION
→ 최대 200만 입력 Row 결합
→ 중복 제거 Key 비교
→ Sort 또는 Hash Workarea 사용 가능
→ 결과 반환

UNION ALL
→ Branch 결과 연결
→ 전체 중복 제거 단계 없음
→ 결과 반환

UNION의 비용은 다음에 영향을 받습니다.

  • 두 Branch의 총 입력 행 수
  • Select List의 Row 폭
  • 실제 Unique Row 수
  • Sort·Hash Workarea Memory
  • TEMP Spill 여부
  • 병렬 재분배
  • 최종 ORDER BY

결과가 같다는 증명 없이 UNION ALL로 바꾸면 성능은 좋아져도 중복 Row가 추가될 수 있습니다.


이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.