반응형
- /**********************************************************************************************
-- Title : [2k5] 열 포함된 인덱스 생성(row included index)
-- Reference : hanbitbook.co.kr
-- Key word : create index row included index
**********************************************************************************************/
USE Tempdb;
go
DROP TABLE testTbl;
go
CREATE TABLE testTbl
( a VARCHAR(400)
, b VARCHAR(400)
, c VARCHAR(400)
);
go
-- 900바이트를 초과해서 인덱스 생성시 경고 발생
CREATE NONCLUSTERED INDEX idx_testTbl_abc
ON testTbl (a,b,c);
go
/*
경고! 최대 키 길이는 900바이트입니다. 인덱스 'idx_testTbl_abc'의 최대 길이는 1200바이트입니다.
큰 값을 조합한 일부 경우에는 삽입/업데이트 작업을 수행할 수 없습니다.
*/
-- 900바이트를 넘지 않아 에러 없음
INSERT INTO testTbl VALUES (REPLICATE('A',100),REPLICATE('B',100),REPLICATE('C',100));
go
-- 900바이트를 초과해서 에러 발생
INSERT INTO testTbl
VALUES ( REPLICATE('A',400), REPLICATE('B',400),REPLICATE('C',400));
go
/*
메시지 1946, 수준 16, 상태 3, 줄 1
작업이 실패했습니다. 인덱스 'idx_testTbl_abc'에 대한 인덱스 항목의 길이(1200바이트)가 최대 길이 900바이트를 초과합니다.
*/
-- 인덱스 삭제
DROP INDEX testTbl.idx_testTbl_abc;
go
-- Included Rows Index 생성
CREATE NONCLUSTERED INDEX idx_testTbl_abc
ON testTbl (a) INCLUDE (b,c);
go
-- 900바이트를 초과해도 에러 발생하지 않음
INSERT INTO testTbl
VALUES ( REPLICATE('A',400), REPLICATE('B',400),REPLICATE('C',400));
go
반응형