공부/MySQL

[MySQL] UNION ALL과 JOIN

순제로 2024. 4. 13. 07:55
728x90

MySQL에서 `UNION ALL` 명령어와 `JOIN` 연산의 차이점을 이해하는 것은 데이터 처리와 분석에 있어 매우 중요합니다. 이 두 연산의 기본 구조, 사용 예시, 주의사항 및 차이점에 대해 정리했습니다.

UNION ALL 명령어

1. 기본 구조

UNION ALL은 여러 SQL 쿼리 결과를 하나의 결과 집합으로 결합할 때 사용됩니다. 중복을 허용하며, 중복 제거 과정으로 인한 성능 저하를 방지할 수 있습니다.

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
  • 주의사항: 각 SELECT 문에서 선택하는 컬럼의 수와 데이터 타입이 일치해야 합니다.

2. 예시

employees 테이블과 contractors 테이블에서 name 컬럼을 선택하여 하나의 리스트로 결합하는 경우:

SELECT name FROM employees
UNION ALL
SELECT name FROM contractors;

 

3. 주의사항

  • 열의 개수와 데이터 유형이 일치해야 합니다.
  • ORDER BY 절은 마지막 UNION ALL 연산에만 사용할 수 있습니다.

 

JOIN 연산

JOIN은 두 테이블 간의 관계를 기반으로 행을 결합합니다. 관련 있는 데이터를 가로로 결합하여 새로운 결과 집합을 생성합니다.

예시

employees 테이블과 departments 테이블을 department_id를 기준으로 결합하는 경우:

SELECT employees.name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.id;

 

UNION ALL과 JOIN의 차이점

  • 결과 집합의 구성 방식: UNION ALL은 결과를 세로로 결합하며 중복을 허용합니다. 반면, JOIN은 테이블 간의 관계를 기반으로 데이터를 가로로 결합합니다.
  • 성능: 큰 데이터셋에서 UNION ALL은 성능 저하가 발생할 수 있으나, JOIN은 인덱스 최적화를 통해 더 빠른 성능을 낼 수 있습니다.
  • 용도: UNION ALL은 같은 구조의 데이터를 합칠 때 사용되며, JOIN은 서로 다른 테이블의 관련 데이터를 결합할 때 사용됩니다.
  • 중복 처리: UNION ALL은 중복을 그대로 유지하는 반면, JOIN은 중복 제거와는 별개로, 결합 조건에 따라 데이터를 결합합니다.

이러한 차이점을 통해 각 연산의 적절한 사용 시나리오를 파악하고, 데이터를 효율적으로 처리 및 분석할 수 있습니다.

728x90

'공부 > MySQL' 카테고리의 다른 글

[MySQL] WITH  (0) 2024.04.23
[MySQL] 셀프조인  (0) 2024.04.12
[MySQL] 재귀 쿼리  (0) 2024.04.12