SMALL
공기업 면접에서 나왔던 질문이다. 대답을 잘 하지 못해서 정리를 하고자 한다.
TABLE A
data |
1 |
2 |
TABLE B
data |
2 |
3 |
UNION
UNION DISTINCT를 줄여서 UNION으로 사용한다.
두 테이블의 결합을 나타내며, 중복을 제거하기 위해 SORT를 사용한다.
자료가 많거나 INDEX가 되어 있지 않은 컬럼을 대상으로 하면 쿼리시간이 길어질 수 있다.
다음 예시를 보자.
SELECT data
FROM A
UNION
SELECT data
FROM B;
위의 쿼리를 실행하면
data |
1 |
2 |
3 |
위와 같이 중복된 값이 제거 되서 정렬이 된다.
UNION ALL
UNION ALL은 중복을 제거하지 않고 그대로 합집합 연산을 하여 결과를 보여준다.
다음 예시를 보자.
SELECT data
FROM A
UNION ALL
SELECT data
FROM B;
위의 쿼리를 실행하면
data |
1 |
2 |
2 |
3 |
위와 같이 중복된 값도 합쳐서 나오게 된다.
결론
왠만해선 유니온을 사용하는 것을 추천하지 않는다. 왜냐하면 유니온을 사용한다는 것 자체가 두 개의 테이블을 원래 합쳐야 되는 것이기 때문이다.
그리고 중복에 대해 문제가 크게 나지 않는다면 UNION 보다는 UNION ALL을 사용하는 것이 낫다.(성능 때문에)
LIST