MySQL CREATE TEMPORARY TABLE은 특정 작업에서 임시 데이터를 저장하고 활용하기 위해 사용하는 매우 유용한 명령어입니다. 임시 테이블(Temporary Table)은 서버 세션 동안만 존재하며, 작업이 끝나거나 세션이 종료되면 자동으로 삭제됩니다. 이 글에서는 CREATE TEMPORARY TABLE의 주요 기능, 문법, 사용법, 다양한 예제 및 활용 방법을 상세히 설명합니다.
CREATE TEMPORARY TABLE이란?
임시 테이블(Temporary Table)은 데이터를 임시로 저장하고 조작하기 위해 생성됩니다. 일반적으로 복잡한 쿼리를 최적화하거나 중간 결과를 저장하는 데 사용됩니다. 임시 테이블은 서버의 메모리와 디스크를 효율적으로 사용하여 성능을 개선할 수 있는 기능을 제공합니다.
CREATE TEMPORARY TABLE의 주요 특징
- 세션 범위 제한: 임시 테이블은 생성한 세션에서만 접근할 수 있으며, 다른 세션에서는 접근할 수 없습니다.
- 자동 삭제: 세션이 종료되면 임시 테이블이 자동으로 삭제됩니다.
- 동일 이름 허용: 서로 다른 세션에서 동일한 이름의 임시 테이블을 생성할 수 있습니다.
- 데이터 분리: 임시 테이블은 실제 데이터베이스 테이블과 독립적으로 작동합니다.
기본 문법
CREATE TEMPORARY TABLE table_name (
column_name data_type [constraints],
...
);
- table_name: 생성할 임시 테이블의 이름.
- column_name: 테이블에 포함될 컬럼의 이름.
- data_type: 컬럼의 데이터 유형.
- constraints: 컬럼에 추가할 제약 조건(예: PRIMARY KEY, UNIQUE 등).
CREATE TEMPORARY TABLE의 활용 사례
- 대규모 데이터를 처리하기 위한 임시 저장소.
- 반복적으로 사용되는 중간 계산 결과를 저장하여 쿼리 성능 최적화.
- 복잡한 조인을 간단하게 처리하기 위한 데이터 분리.
CREATE TEMPORARY TABLE 사용 예제
1. 기본적인 임시 테이블 생성
CREATE TEMPORARY TABLE temp_sales (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255),
quantity INT,
sale_date DATE
);
위 코드는 temp_sales라는 임시 테이블을 생성하며, 기본 키로 id를 설정하고, 상품명, 판매 수량, 판매 날짜를 저장하는 구조를 정의합니다.
2. 데이터 삽입
INSERT INTO temp_sales (product_name, quantity, sale_date)
VALUES
('Laptop', 10, '2024-12-20'),
('Mouse', 50, '2024-12-21');
3. 데이터 조회
SELECT * FROM temp_sales;
결과:
id | product_name | quantity | sale_date |
1 | Laptop | 10 | 2024-12-20 |
2 | Mouse | 50 | 2024-12-21 |
4. 임시 테이블과 기존 테이블의 조인
SELECT
t.product_name,
t.quantity,
p.price
FROM
temp_sales t
JOIN
products p
ON
t.product_name = p.product_name;
위 예제는 temp_sales 임시 테이블과 products라는 실제 테이블을 조인하여 데이터를 조회합니다.
5. 복잡한 쿼리 최적화
CREATE TEMPORARY TABLE temp_high_sales AS
SELECT
product_name,
SUM(quantity) AS total_quantity
FROM
sales
GROUP BY
product_name
HAVING
total_quantity > 100;
이 예제는 판매량이 100개 이상인 상품의 집계 데이터를 저장하는 temp_high_sales 임시 테이블을 생성합니다.
6. 임시 테이블 삭제
DROP TEMPORARY TABLE IF EXISTS temp_sales;
임시 테이블을 명시적으로 삭제하는 방법입니다. 세션 종료 시 자동으로 삭제되지만, 필요시 수동으로 삭제할 수 있습니다.
CREATE TEMPORARY TABLE 사용 시 주의사항
- 세션 범위: 임시 테이블은 생성한 세션 내에서만 유효하며, 다른 세션에서는 접근이 불가능합니다.
- 이름 충돌 방지: 동일 이름의 임시 테이블과 실제 테이블이 공존할 수 없으므로, 이름 충돌을 주의해야 합니다.
- 메모리 사용량: 임시 테이블이 메모리를 많이 사용할 경우 서버 성능에 영향을 미칠 수 있습니다.
- 스토리지 엔진: 기본적으로 InnoDB 엔진이 사용되며, 테이블 생성 시 변경이 가능합니다.
고급 활용 사례
1. 임시 테이블에 인덱스 추가
CREATE TEMPORARY TABLE temp_orders (
order_id INT,
customer_id INT,
total_amount DECIMAL(10, 2),
INDEX (customer_id)
);
이 코드는 customer_id에 인덱스를 추가하여 쿼리 성능을 향상시킵니다.
2. SELECT 결과로 임시 테이블 생성
CREATE TEMPORARY TABLE temp_top_customers AS
SELECT
customer_id,
SUM(total_amount) AS total_spent
FROM
orders
GROUP BY
customer_id
ORDER BY
total_spent DESC
LIMIT 10;
이 코드는 가장 많은 금액을 소비한 상위 10명의 고객 데이터를 임시 테이블에 저장합니다.
CREATE TEMPORARY TABLE의 장점
- 성능 최적화: 복잡한 계산이나 조인을 임시 테이블에 저장하여 실행 속도를 개선.
- 코드 가독성: 쿼리를 단순화하고 유지보수를 용이하게 함.
- 안정성: 세션 범위에서만 유효하므로 다른 사용자에게 영향을 주지 않음.
공식 가이드문서
MySQL 공식 문서 : https://dev.mysql.com/doc/refman/8.0/en/
'DB' 카테고리의 다른 글
[MySQL] GRANT 완벽 가이드 사용법(권한 부여) (0) | 2025.01.08 |
---|---|
[MySQL] SHOW CREATE 완벽 가이드 사용법(객체 생성 스크립트 보기) (0) | 2025.01.08 |
[MySQL] SET FOREIGN_KEY_CHECKS 완벽 가이드 사용법(외래 키 제약 조건 활성/비활성) (0) | 2025.01.08 |
[MySQL] ALTER DATABASE 완벽 가이드 사용법(데이터베이스 설정 변경) (0) | 2025.01.08 |
[MySQL] REPAIR TABLE 완벽 가이드 사용법(테이블 복구) (0) | 2025.01.07 |
[MySQL] OPTIMIZE TABLE 완벽 가이드 사용법(테이블 최적화) (0) | 2025.01.07 |
[MySQL] CHECK TABLE 완벽 가이드 사용법(테이블 무결성/오류 진단) (0) | 2025.01.06 |
[MySQL] ANALYZE TABLE 완벽 가이드 사용법(테이블 분석) (0) | 2025.01.06 |