본문 바로가기

개발/DB&SQL

[SQL] ORACLE UNION과 UNION ALL의 차이

반응형

SQL 에서 UNION/UNION ALL은 두 개 이상의 조회 결과를 하나로 합치는 연산자입니다. JOIN과의 차이점은 JOIN은 가로 방향으로 합친다면, UNION은 세로 방향으로 합칩니다.

이제 UNION과 UNION ALL 두 연산자의 차이를 보겠습니다.

SELECT 10 DATA FROM SYS.DUAL
UNION 
SELECT 10 DATA FROM SYS.DUAL
UNION
SELECT 20 DATA FROM SYS.DUAL

-----

SELECT 10 DATA FROM SYS.DUAL
UNION ALL
SELECT 10 DATA FROM SYS.DUAL
UNION ALL
SELECT 20 DATA FROM SYS.DUAL

위 쿼리를 수행하면,

UNION은 10과 20으로 2개 데이터만 출력됩니다. 반면, UNION ALL은 10, 10, 20 으로 총 3개 데이터가 출력됩니다.

보다시피 UNION은 중복을 제거하여 출력합니다.

UNION과 UNION ALL은 성능적인 차이도 있습니다. UNION의 경우 중복 제거를 위하여 전체 데이터를 모두 탐색합니다. 따라서 속도가 느립니다.

중복 제거의 유무가 상관없다면, UNION ALL 연산자를 사용하는 게 좋겠습니다.

 

반응형