SPARSE, 임시테이블

Hyuntae Jung·2022년 7월 26일
0

MS SQL

목록 보기
27/41
post-thumbnail

1. EXECUTE(EXEC)

: SQL문을 실행시키는 명령어

DECLARE @sql VARCHAR(100);

SET @sql ='SELECT *
					FROM employee 
				  WHERE empNo = 1002'

EXEC(@sql);

2. GETDATE로 테이블 생성하기(EXEC)

DECLARE @todayDate DATE
DECLARE @Month VARCHAR(2)
DECLARE @day VARCHAR(2)
DECLARE @sql VARCHAR(100)

SET @todayDate = GETDATE()
SET @Month = MONTH(@todayDate)
SET @day = DAY(@todayDate);
SET @sql = 'create table test_'+@Month+'_'+@day
SET @sql += '(no INT, name CHAR(10))'

EXEC(@sql);

위와 같이 test_7_26 테이블이 생성된다.

3. SPARSE 열

: NULL 값이 많이 들어가는 열의 저장공간을 낭비하지 않게 하기위해서 지정하는 열

CREATE TABLE aaa(
	no INT IDENTITY,
	name CHAR(100) NULL
	);
GO

CREATE TABLE sparseTbl(
	no INT IDENTITY,
	name CHAR(100) SPARSE NULL
	);

테이블 생성

DECLARE @i INT = 0

WHILE @i < 10000
BEGIN
	INSERT aaa VALUES(NULL);
	INSERT aaa VALUES(NULL);
	INSERT aaa VALUES(NULL);
	INSERT aaa VALUES(NULL);
	INSERT aaa VALUES(replicate('s',100));
	--sparse 열
	INSERT sparseTbl VALUES(NULL);
	INSERT sparseTbl VALUES(NULL);
	INSERT sparseTbl VALUES(NULL);
	INSERT sparseTbl VALUES(NULL);
	INSERT sparseTbl VALUES(replicate('s',100));
	SET @i += 1
END

SELECT *
  FROM aaa;
GO
SELECT *
  FROM sparseTbl;

위와 같이 SPARSE를 사용하면 메모리를 줄일 수 있다.

4. 임시테이블

: #, ## 문자를 테이블 명 앞에 붙여 사용한다.

  • # : 생성한 사용자만 사용할 수 있는 테이블. 쿼리창이 닫히면 바로 삭제됨
  • ## : 모든 사용자가 사용할 수 있는 테이블. 쿼리창이 닫히고, 사용자가 없으면 삭제됨
CREATE TABLE #tempTbl1(
	no INT, name NCHAR(10)
);
GO
CREATE TABLE ##tempTbl2(
	no INT, name NCHAR(10)
);

INSERT #tempTbl1 VALUES(1, '테이블 #1');

INSERT ##tempTbl2 VALUES(1,'테이블 ##2');

SELECT * FROM #tempTbl1;

SELECT * FROM ##tempTbl2;

#는 생성한 쿼리창을 벗어나면 해당 테이블을 사용할 수 없다.

강의: ms sql 2014 제대로 배우기 2

0개의 댓글