Database/MySQL

[MySQL]UNION과 UNION ALL의 공통점과 차이점

GAEBAL 2024. 1. 31. 21:43
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