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 작업으로 성능 저하
대용량 작업 시 임시테이블, 소량 작업 시 테이블 변수를 사용할 것!
'DB > RDBMS' 카테고리의 다른 글
[PostgreSQL] 컬럼명(Alias)을 대문자로 출력하는 방법 (MyBatis) (0) | 2020.04.29 |
---|---|
[PostgreSQL] 트랜잭션 사용하기 (0) | 2020.04.29 |
[MSSQL] 임시테이블 존재여부 확인 (0) | 2020.04.27 |
[MSSQL] SELECT INTO - 테이블 또는 임시테이블 복사 (0) | 2020.04.27 |
[MSSQL] 저장 프로시저 생성 및 수정과 실행 (0) | 2020.04.27 |