본문 바로가기
DB/RDBMS

[MSSQL] 테이블변수와 임시테이블 장단점

by 소라둥이 2020. 4. 27.

1. 임시테이블

임시테이블은 로그아웃 시 삭제되며 현재 DB가 아닌 시스템 DB인 tesmpdb에 저장된다.

만약 크기가 작다면 메모리에만 존재하기도 한다. (29Kbyte 기준)

전역 임시테이블은 모든 곳에서 이 테이블에 대한 참조를 중지하기 전까지 삭제할수 없으며 모든 작업이 참조를 중지 할 때 삭제된다.

 

장점

- 인덱스 사용 가능

- FK 제외한 모든 제약조건 사용 가능

- ALTER를 이용하여 테이블 변경 가능

- 통계정보 및 Non Cluster Index의 사용으로 대용량 및 조인 쿼리 성능 높이기 가능

 

단점

- Transaction Overhead, Lock Overhead, Rollback Overhead 존재

- 저장 프로시저에서 사용 시 실행마다 재컴파일, CPU 부하 및 추가적인 확인 작업 필요

 

2. 테이블변수

테이블 변수가 정의된 함수 또는 저장프로시저, 일괄처리가 끝나면 자동으로 삭제된다.

테이블변수와 관련된 트랜잭션은 테이블변수 업데이트 시에만 지속되기 때문에 리소스 잠금과 로깅이 여유로워진다.

 

장점

- 임시테이블에서 발생할 수 있는 Overhead문제 없음.

- 저장 프로시저에서 사용 시 종료되면 삭제되기 때문에 부담 없음

 

단점

- PK, UNIQUE를 통한 Cluster index만 생성 가능

- 테이블의 각 컬럼에 대한 통계정보 생성 X

- 100건 이상 데이터 사용 시 Sort 작업으로 성능 저하

 

 

대용량 작업 시 임시테이블, 소량 작업 시 테이블 변수를 사용할 것!