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

'전공 > 데이터베이스' 카테고리의 다른 글

SQL 명령어  (0) 2018.07.16
UNDO와 REDO  (0) 2018.06.14
DB정규화  (0) 2018.05.17
트랜잭션  (0) 2018.05.04
조인  (0) 2018.05.02

+ Recent posts