반응형
  1. /**********************************************************************************************
    -- 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
반응형

+ Recent posts