집합 연산입문
UNION ALL
두 SELECT 결과를 그대로 이어 붙이는 연산 (중복 제거 안 함)
정의
두 SELECT의 결과를 위아래로 이어 붙인다. 중복된 행이 있어도 그대로 둔다. 컬럼 수와 데이터 타입이 양쪽이 같아야 한다. 비교 대상인 UNION은 중복을 제거하지만, 그 과정에서 정렬·비교 작업이 추가로 일어나 더 느리다.
왜 중요한가?
실무에서는 대부분의 경우 UNION ALL이 정답이다. UNION을 습관적으로 쓰면 매번 중복 제거 작업이 들어가서 느려진다. 중복이 안 생긴다는 게 확실하면(예: 2024년 데이터 + 2025년 데이터) 반드시 UNION ALL을 쓰자.
틀리기 쉬운 포인트
예시
SELECT id, amount FROM orders_2024 UNION ALL SELECT id, amount FROM orders_2025;
성능 포인트
!UNION은 정렬 후 중복 제거를 위해 PGA 메모리/Temp 공간을 사용한다. UNION ALL은 그런 비용이 없다. 의식적으로 ALL을 붙여라.