✅ 요약 비교표
구분UNIONUNION ALL
| 중복 제거 | ✅ 중복 제거 (DISTINCT 자동 적용) | ❌ 중복 제거 안 함 (모든 행 출력) |
| 속도 | ⏳ 상대적으로 느림 (중복 제거 연산 필요) | ⚡ 더 빠름 (중복 체크 안 하니까) |
| 용도 | 결과에서 중복을 제거하고 싶을 때 | 결과에 중복을 포함하고 싶을 때 |
📌 예제 데이터
🔹 Table A
IDName
| 1 | Alice |
| 2 | Bob |
🔹 Table B
IDName
| 2 | Bob |
| 3 | Carol |
📍 1. UNION 예시
SELECT * FROM A UNION SELECT * FROM B;
🔸 결과
IDName
| 1 | Alice |
| 2 | Bob |
| 3 | Carol |
📍 2. UNION ALL 예시
SELECT * FROM A UNION ALL SELECT * FROM B;
🔸 결과
IDName
| 1 | Alice |
| 2 | Bob |
| 2 | Bob |
| 3 | Carol |
🧠 언제 어떤 걸 써야 할까?
상황추천 연산자
| 중복 결과를 제거하고 싶다 | UNION |
| 중복도 포함해서 모두 보고 싶다 | UNION ALL |
| 성능이 중요한 경우 (대용량) | UNION ALL (빠름) |
💡 실무 팁
- UNION은 내부적으로 DISTINCT가 자동 적용되기 때문에 중복 제거가 필요 없으면 UNION ALL이 더 효율적이야.
- UNION ALL 사용 후 직접 WHERE, GROUP BY, HAVING 등으로 필요한 필터링을 적용할 수도 있어.