728x90
공통점
결과 행의 형식
두 연산자 모두 여러 SELECT 문의 결과를 단일 결과 집합으로 결합함
결과 집합
모든 SELECT 문의 결과를 하나의 결과 집합으로 반환함
컬럼 형식
각 SELECT 문에서 반환되는 열의 수와 데이터 형식이 동일해야 합니다.
차이점
중복 행의 처리
UNION
중복된 행을 제거함
즉, 중복된 결과 행은 하나의 행으로만 반환됨
UNION ALL
중복된 행을 제거하지 않고 모든 결과를 포함함
성능
UNION
중복 행을 제거하기 위해 추가적인 처리가 필요하므로 일반적으로 UNION ALL보다 더 많은 시간이 소요됨
UNION ALL
중복을 제거하지 않기 때문에 UNION보다 더 빠른 결과를 반환함
예시
- EMPLOYEES_1 테이블
id | name
----|------
1 | John
2 | Alice
3 | Bob
1 | Emily
- EMPLOYEES_2 테이블
id | name
----|------
1 | John
4 | Michael
UNION
예시 코드
SELECT id, name FROM EMPLOYEES_1
UNION
SELECT id, name FROM EMPLOYEES_2
;
결과
id | name
----|------
1 | John
2 | Alice
3 | Bob
1 | Emily
4 | Michael
UNION ALL
예시 코드
SELECT id, name FROM EMPLOYEES_1
UNION ALL
SELECT id, name FROM EMPLOYEES_2
;
결과
id | name
----|------
1 | John
2 | Alice
3 | Bob
1 | Emily
1 | John
4 | Michael
UNION을 사용한 경우와 다르게 UNION ALL을 사용한 경우의 결과를 보면,
id: 1, name: John인 데이터가 중복되어 2개가 나온 것을 확인할 수 있음 !!!
결론
따라서, 데이터에 중복이 있어도 상관없고 처리 속도가 중요하다면 UNION ALL을 사용하는 것이 좋음.
하지만 중복을 제거하고자 하거나 중복된 행이 없는 것을 보장하고자 할 때는 UNION을 사용해야 함 !!!
728x90