PostgreSQL에서 임시 테이블(Temporary Table)은 세션(Session) 또는 트랜잭션(Transaction) 동안만 유지되는 테이블로, 일정 시간이 지나면 자동으로 삭제됩니다. 임시 데이터를 저장하거나, 복잡한 쿼리에서 중간 결과를 저장할 때 유용하게 사용할 수 있습니다.
1. 임시 테이블 생성하기
임시 테이블을 생성하는 기본적인 방법은 다음과 같습니다.
CREATE TEMP TABLE temp_users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
phone INT NULL,
email VARCHAR UNIQUE NOT NULL
);
-- ON COMMIT DROP; -- 트랜잭션 COMMIT될 때 해당 임시 테이블 삭제
-- ON COMMIT DELETE ROWS; -- 트랜젝션 COMMIT될 때 임시 테이블의 모든 행 삭제
TEMPORARY vs TEMP
- TEMPORARY TABLE 또는 TEMP TABLE을 사용하면 해당 세션 동안만 유지됩니다.
- 세션이 종료되면 테이블이 자동으로 삭제됩니다.
- 세션에 사용할 때는 세션 만료시 자동으로 임시 테이블이 삭제 되지만 트랜잭션 내에서 생성시 ON COMMIT 옵션을 추가해야 삭제됩니다. (프로시저, 함수 등에서의 사용)
2. 임시 테이블에 데이터 삽입하기
임시 테이블은 일반 테이블과 동일한 방식으로 데이터를 삽입할 수 있습니다.
INSERT INTO temp_users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
데이터가 잘 삽입되었는지 확인하려면 다음 쿼리를 실행합니다.
SELECT * FROM temp_users;
3. 기존 테이블 데이터를 임시 테이블에 복사하기
기존 테이블의 데이터를 활용하여 임시 테이블을 만들 수도 있습니다.
CREATE TEMP TABLE temp_orders AS
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL '7 days';
위 쿼리는 최근 7일 동안의 주문 데이터를 temp_orders라는 임시 테이블로 생성합니다.
4. 임시 테이블 사용 시 주의할 점
- 세션이 종료되면 자동 삭제됨 → 영구적으로 사용할 데이터를 저장하면 안 됩니다.
- 같은 이름의 테이블이 존재할 수 있음 → 동일한 테이블 이름이 있을 경우, 임시 테이블이 우선 사용됩니다.
- 인덱스 생성 가능 → 일반 테이블처럼 CREATE INDEX를 사용할 수 있습니다.
CREATE INDEX idx_temp_users_email ON temp_users(email);
6. 결론
임시 테이블은 세션이나 트랜잭션 동안만 유지되는 일시적인 테이블로, 복잡한 쿼리의 중간 데이터를 저장하거나 성능을 최적화할 때 유용합니다. 적절히 활용하면 쿼리 속도를 개선하고, 불필요한 데이터 저장을 줄일 수 있습니다.
반응형
'DB > postgreSQL' 카테고리의 다른 글
postgreSQL UPDATE, DELETE 조인 사용법 (0) | 2025.04.01 |
---|---|
postgreSQL merge문 사용하기 (0) | 2025.03.28 |