SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
집합 연산·EXISTS로 Sort와 중복 제거 줄이기
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 잘못된 판단 | 정확한 기준 |
|---|---|
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만 행을 반환한다고 가정합니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
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가 추가될 수 있습니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.