컨텐츠 바로가기

임시테이블 vs 테이블변수

http://runhanii.egloos.com/2607474

임시테이블

 

     임시 테이블의 테이블 이름은 숫자 기호(#)로 시작합니다.

사용자가 연결이 끊겼을 때 임시 테이블이 삭제되지 않는 경우 SQL Server는 자동으로 임시 테이블을 삭제합니다.

가)    임시 테이블은 현재 데이터베이스에 저장되지 않고 시스템 데이터베이스 tempdb에 저장됩니다.단 데이터 건수가 작을때는 메모리에만 존재 Tempdb 사이즈 증가 안함 (데이터가 29 K 이하 일때는 메모리에 존재 )


나)    로컬 임시 테이블

     하나의 숫자 기호(#) 으로 시작함.

     이 테이블은 테이블을 만든 연결에서만 볼 수 있음.

다)    전역 임시 테이블

     두개의 숫자 기호(##) 으로 시작함.

     이 테이블을 만든 연결이 끊어지기 전에 이 테이블이 명시적으로 삭제되지 않으며 다른 모든 작업이 이 테이블에 대한 참조를 중지할 떄 바로 삭제됩니다.

라)    장점

     인덱스를 작성할 수 있다.

     FK(외래키)를 제외한 나머지 제약을 지정할 수 있다.

     테이블은 작성이 되지만 경고 메시지와 함께 FK 선언은 제외된다.

     ALTER TABLE이 가능하다.

      INSERT INTO, BULK INSERT 문과 함께 사용할 수 있다.

 

테이블변수

 

1.     SQL Server 2000 버전에서 새로 추가된 형식으로 임시 테이블을 만들어 사용하는 것과 비슷한 역할을 수행 함.

2.     임시 테이블은 현재 데이터베이스에 저장되지 않고 시스템 데이터베이스 tempdb에 저장됩니다. 단 데이터 건수가 작을때는 메모리에만 존재 Tempdb 사이즈 증가 안함 ( 데이터가 29 K 이하 일때는 메모리에 존재 )


3.     테이블 변수 특징

A.     테이블 변수는 테이블 변수가 정의된 함수 및 저장 프로시져 및 일괄 처리가 끝나면 자동으로 정리됨.

B.      테이블 변수와 관련된 트랜잭션은 테이블 변수가 업데이트 되는 동안만 지속됨. 따라서 테이블 변수를 사용하면 리소스 잠금과 로깅에 대한 요구가 줄어듬.

4.     장점

A.     Primary Key(기본키), UNIQUE(유일키), CHECK 제약을 쓸 수 있다.

B.      IDENTITY(식별자) 속성을 지정할 수 있다.

C.      SELECT, INSERT, UPDATE, DELETE 문에 사용할 수 있다.

5.     제약사항

A.     FK를 사용할 수 없다.

B.      ALTER TABLE를 할 수 없다.

C.      추가 인덱스를 선언할 수 없다. (클러스터 인덱스는 가질 수 있다)

D.     그러나 PK, UNIQUE가 있다.

E.      로컬 변수나, UDF 안에서만 사용된다.

F.      임시 테이블의 테이블 이름은 숫자 기호(#)로 시작합니다.

 

임시테이블 VS 테이블변수

 















임시테이블

테이블 변수

존재 기간

명시적으로 삭제를 안할 시에는

세션 연결 기간동안 존재

명시적으로 삭제를 안할 시에는

배치 처리기간 동안 존재

저장소

Tempdb

Tempdb

쿼리비용

대용량에서는 쿼리 비용 유리

소용량에서 쿼리 비용 유리

장단점

대용량 데이터 처리에 유리

세션 단위 처리시에 사용

소용량 데이터 처리에서 유리

저장 프로시져에서 테이블 변수 사용하면 임시 테이블 사용할 떄보다 저장 프로시저를 다시 컴파일하는 일이 줄어듬.

배치 처리 단위인 저장 프로시져에서 사용 유리

 


덧글|신고