본문 바로가기

mssql10

[MSSQL] 테이블변수와 임시테이블 장단점 1. 임시테이블 임시테이블은 로그아웃 시 삭제되며 현재 DB가 아닌 시스템 DB인 tesmpdb에 저장된다. 만약 크기가 작다면 메모리에만 존재하기도 한다. (29Kbyte 기준) 전역 임시테이블은 모든 곳에서 이 테이블에 대한 참조를 중지하기 전까지 삭제할수 없으며 모든 작업이 참조를 중지 할 때 삭제된다. 장점 - 인덱스 사용 가능 - FK 제외한 모든 제약조건 사용 가능 - ALTER를 이용하여 테이블 변경 가능 - 통계정보 및 Non Cluster Index의 사용으로 대용량 및 조인 쿼리 성능 높이기 가능 단점 - Transaction Overhead, Lock Overhead, Rollback Overhead 존재 - 저장 프로시저에서 사용 시 실행마다 재컴파일, CPU 부하 및 추가적인 확인.. 2020. 4. 27.
[MSSQL] 임시테이블 존재여부 확인 임시테이블이 세션이 살아있는 동안 존재하다보니 프로시저 안에서 생성하는 경우 이미 존재한다는 에러가 종종 발생한다. 따라서 임시테이블이 존재할 경우 삭제하고 생성하는 쿼리가 필요하다 IF OBJECT_ID(;tempdb..[임시테이블명]') IS NOT NULL DROP TABLE [임시테이블명] 삭제 뿐만 아니라 임시테이블이 살아 있을 시 필요한 작업 등을 처리 할 수 있다. 2020. 4. 27.
[MSSQL] SELECT INTO - 테이블 또는 임시테이블 복사 테이블을 복사하기 위해 주로 아래 방법을 사용하였다. CREATE TABLE TEMP_테이블명( ) INSERT TEMP_테이블 SELECT * FROM 원본테이블 복사할 테이블이 많아지고 컬럼이 수십개가 되니 너무 번거로운 작업이였고 찾아보니 select into를 이용하여 간단하게 복사가 가능하였다. 위 쿼리를 select into로 변경하면 select * into TEMP_테이블 from 원본테이블 [조건문] 만약 임시테이블을 생성하여 복사하고 싶다면 select * into #TEMP_테이블 from 원본테이블 [조건문] #을 붙여주면된다. ##을 붙이면 전역 임시테이블로 생성되면 #은 해당 세션에서만 사용가능하며 ##은 전역으로써 모든 세션에서 사용 가능하다. 임시테이블은 로그아웃 전까지 존재.. 2020. 4. 27.
[MSSQL] 저장 프로시저 생성 및 수정과 실행 - 프로시저 생성 CREATE PROC [프로시저명] [파라미터 이름] [파라미터 타입] AS [프로시저 구문] ex) CREATE PROC dbo.proc1 @NUM INT, @STRING VARCHAR(100) AS SELECT @NUM, @STRING - 프로시저 수정 ALTER PROC [프로시저명] [파라미터 이름] [파라미터 타입] AS [프로시저 구문] - 프로시저 실행 EXEC [프로시저명] [파라미터값], [파라미터값] ex) EXEC [dbo].[proc1] 10, '마스크' 수정, 삭제 구문에서 PROC은 PROCEDURE로 써도 가능하다. 2020. 4. 27.