[데이터베이스/SQL] UNION과 UNION ALL

JuseungL·2024년 1월 25일
0

DB/SQL

목록 보기
7/9
post-thumbnail

UNION [DISTINCT]

UNION과 UNION DISTICT는 동일하다.
UNION은 중복을 제거한 결과

SELECT stud_name, subject FROM student1  
UNION  
SELECT stud_name, subject FROM student2;  

처리 과정

  1. 최종 UNION 결과에 적합한 임시 테이블을 메모리 테이블로 생성한다.
  2. UNION 또는 UNION DISTINCT의 경우, 임시 테이블의 모든 컬럼으로 Unique Hash 인덱스 생성한다.
  3. 서브쿼리 실행 후 결과를 임시 테이블에 복사한다.
  4. 임시 테이블이 특정 사이즈 이상으로 커지면 임시 테이블을 Disk 임시 테이블로 변경한다.
  5. 임시 테이블을 읽어서 Client에 결과를 전송한다.
  6. 임시 테이블을 삭제한다.

UNION ALL

(SELECT stud_name, subject, marks FROM students)  
UNION ALL  
(SELECT stud_name, subject, marks FROM student2)  
ORDER BY marks;  

UNION/UNION ALL 제약 조건
상위 SQL문과 하위 SQL문의 컬럼 개수가 동일해야 한다.
상위 SQL문과 하위 SQL문의 컬럼 위치가 동일한 컬럼들이 결합 된다.
컬럼명은 최상위 SQL문의 명칭을 따르게 된다.

❗️UNION [DISTINCT] 유의 점
내부적으로 중복을 체크하는 로직이 작동되는데 데이터가 적으면 차이가 미비하지만 데이터가 매우 많을 경우 중복 체크를 하는 과정에서 부하가 많이 발생하게 됩니다.

profile
기록

0개의 댓글