[MSSQL] 테이블 in 동적쿼리

Mira Jo·2021년 8월 26일
0

MSSQL

목록 보기
1/8

테이블 변수 (DECLARE @TEMP TABLE)

-, 소용량에서 쿼리비용/ 데이터 처리 유리 (INSERT데이터가 100건 이하, 1~2개 컬럼인 경우 사용)
-, SP내에서 사용하면 임시테이블보다 유리(다시 컴파일 하는 일 줄어듦)
-, 해당 배치(Batch) 혹은 저장 프로시져내로 Scope가 제한됨 => 정의된 함수나 프로시저 처리 끝나면 자동으로 정리됨
-, 장점 : PK, UNIQUE, CHECK 제약 사용 가능. IDENTITY 지정 가능.
-, 단점 : FK 사용 불가, ALTER TABLE 불가, 추가 IDX 선언 불가
-, 가능하면 PK, UNIQUE 지정해서 정렬된 형태로 저장해 사용

임시테이블 (CREATE TABLE #TEMP)

-, #(로컬), ##(전역)으로 시작
-, DROP하지 않으면 세션 연결기간 동안 유지. 사용자 연결 끊기면 자동 삭제
=> 모든 세션에서 공유하기 때문에 동시에 사용할 경우 LOCK 걸릴 수 있음
-, 대용량에서 처리 유리. (INSERT되는 데이터가 100건 이상인 경우)
-, 세션단위 처리시에 사용
-, 장점 : 인덱스 작성 가능, FK제외한 나머지 제약 지정 가능, ALTER TABLE가능, INSERT INTO 함께 사용 가능

결론 : Dynamic SQL문 안에 테이블변수를 사용하고 이를 EXECUTE로 실행한다면 이는 현재 배치와 별도의 Context를 가지므로 테이블 변수를 인식할 수 없다

참고 : http://www.sqlprogram.com/TIPS/tip-table_variable.aspx
https://blog.sonim1.com/166

0개의 댓글