1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용
테이블 변수
- 테이블 반환 매개 변수입니다. 테이블 이름은 (@)시작한다.
- 테이블 변수가 정의된 함수 및 저장프로시저, 일괄 처리가 끝나면 자동으로 정리함
- 트랜잭션은 테이블 변수가 업데이트 되는 동안만 지속됨.
- 리소스 잠금과 로깅에 대한 요구가 줄어듬
참조사이트 : http://blog.naver.com/PostView.nhn?blogId=islove8587&logNo=220608680181
T-SQL이란(Transact-SQL)
- SQL 표준 상에서 확장
- 선언문을 이용하여 관계형 데이터베이스를 조회하고 변경하고 정의
- 다양한 지원 함수, DELETE 및 UPDATE 문에 대한 변경, 절차적 프로그래밍, 지역 변수를 포함.
- 트랜젝트 SQL의 흐름 제어 키워드로 BEGIN / END, BREAK, CONTINUE, GOTO, IF / ELSE, RETURN, WAITFOR, WHILE이 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -- 테이블 변수 생성 DECLARE @MAILTYPE_TABLE TABLE ( type varchar(50), ) -- 스칼라 변수 생성 DECLARE @TYPEARRAY VARCHAR(500) DECLARE @SPLIT_TEMP VARCHAR(50) -- 스칼라 변수 셋팅 SET @TYPEARRAY = 'JoinComplete,PointBuy,RequestPay,RequestData,RequestDataNPay,PayComplete,OrderEnd,MakeBegin,Delivery ' -- WHILE 문, INDEX의 값으로 판단 WHILE CHARINDEX(',',@TYPEARRAY) <> 0 BEGIN SET @SPLIT_TEMP = (SUBSTRING(@TYPEARRAY, 1, CHARINDEX(',', @TYPEARRAY) - 1)) -- 인덱스 1번부터 ','(콤마)까지 문자열 자르기 INSERT INTO @MAILTYPE_TABLE VALUES(@SPLIT_TEMP) SET @TYPEARRAY = SUBSTRING(@TYPEARRAY, CHARINDEX(',', @TYPEARRAY) + 1, LEN(@TYPEARRAY)) -- ','(콤마) 다음 문자열부터 @TYPEARRAY 변수 문자 총길이까지 문자열 자르기 END -- INDEX 값이 0이면 IF CHARINDEX(',',@TYPEARRAY) = 0 BEGIN SET @SPLIT_TEMP = SUBSTRING(@TYPEARRAY, 1, LEN(@TYPEARRAY)) INSERT INTO @MAILTYPE_TABLE VALUES(@SPLIT_TEMP) END -- SELECT 테이블 변수 SELECT * FROM @MAILTYPE_TABLE | cs |
< 테이블 변수, 배열처리를 활용한 결과 >
임시 테이블
- 테이블 이름은 (#)시작한다.
- 사용자가 연결이 끊겼을 때 임시 테이블은 삭제되며, 삭제되지 않은 경우 SQL Servere에서 자동으로 임시 테이블을 삭제한다.
- 시스템 데이터베이스 Tempdb에 저장된다. 단 데이터 건수가 작을 때는 메모리에만 존재 Tempdb 사이즈 증가 안함(데이터가 29k일때는 메모리 존재
참조사이트 : http://blog.naver.com/PostView.nhn?blogId=islove8587&logNo=220608680181
전역 임시 테이블, 메모리 최적화 기법
- ##table 활용 : #table과 다른 큰 차이점은 런타임 시가 아니라 배포 시 테이블을 만든다.
- 전역 임시 테이블은 컴파일 오버헤드를 방지하기 위해 런타임 시가 아닌 배포 시 테이블을 만든다는 점이 가장 큰 변화
- 전역 임시 테이블을 다음과 같이 DURABILITY = SCHEMA_ONLY가 선언된 메모리 최적화 테이블로 바꾸는 것이 좋습니다.
세션 임시 테이블, 메모리 최적화 기법
- #table, 런타임 시 테이블 생성
'프로그래밍 > MSSQL' 카테고리의 다른 글
Microsoft SQL Server Management Studio - 테이블 디자인 설명 표시 (0) | 2019.03.05 |
---|---|
IDENTITY_INSERT가 OFF로 설정되면 테이블 XXX ID 열에 명시적 값을 삽입할 수 없습니다. (0) | 2018.06.04 |
오류해결 - equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "Japanese_Unicode_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다. (0) | 2018.05.17 |
LinkedServer 프로시저 실행 시 RPC 구성하기 (0) | 2018.05.15 |
오류해결 - has no value!! (0) | 2018.05.15 |