-- MSSQL

테이블변수

어린왕자악꿍 2009. 6. 10. 17:58

커서 : 사용 시 사용부분을 잠금
테이블변수 : 사용 시 사용부분을 잠그지 않음

커서를 사용해야 할 경우, 대신해서 테이블변수를 사용하면 성능에 향상이 기대된다.

SELECT * FROM TEST WITH (NOLOCK)

DECLARE @TEST TABLE
(
    NUM INT NOT NULL
)
INSERT  @TEST (NUM)
SELECT  NUM
FROM    TEST WITH (NOLOCK)

SELECT * FROM @TEST

 

추가) 2014.09.25

임시테이블과 테이블변수

임시테이블은 아래와 같이 사용할 수 있다.

WITH 임시테이블명 AS
(
    SELECT * FROM TEST
)
SELECT * FROM 임시테이블명

임시테이블과 테이블변수는 모두 데이터를 쿼리 시 tempDB에 저장하여 사용한다.
테이블변수는 기본키만 설정이 가능하고, 인덱스 등도 사용할 수 없다.
임시테이블은 트랜잭션을 지원하지만 테이블변수는 트랙잭션을 지원하지 않는다.
임시테이블은 통계 및 재컴파일을 지원하지만 테이블변수는 지원하지 않는다.