반응형
  1. /**********************************************************************************************
    -- Title : [2k5] Auto-Parameterization 데모
    -- Reference : mcpworld.com
    -- Key word : parameterization is_parameterization_forced
    **********************************************************************************************/
    --CLEAN UP
    /*
    DROP DATABASE TESTDB
    GO
    */

    --임시 데이터베이스 생성
    CREATE DATABASE TESTDB
    GO

    USE TESTDB
    GO

    --임시 테이블 생성
    CREATE TABLE TestTable
    (
     seq int identity not null,
     vals int not null default(100)
    )
    GO

    --값 입력 : 1~10까지는 2개씩,  100의 값은 10000개 입력
    SET NOCOUNT ON

    DECLARE @I AS INT
    SET @I = 1
    WHILE @I<=10
    BEGIN
     INSERT TestTable(vals) values(@I);
     INSERT TestTable(vals) values(@I);
     SET @I = @I + 1
    END
    GO

    INSERT TestTable(vals) DEFAULT VALUES
    GO 10000

    SET NOCOUNT OFF
    GO

    -- vals 컬럼 인덱스 생성
    CREATE INDEX IDX_VALS ON TestTable(vals)
    GO

    --I/O 정보 출력, 실제 실행 계획(CTRL + M) 표시 하도록 설정
    SET STATISTICS IO ON
    GO

    ----------------------------------------------------------------------------------

    /*
    ALTER DATABASE TESTDB
    SET Parameterization SIMPLE;
    GO
    */

    SELECT is_parameterization_forced FROM master.sys.databases where name = 'TestDB'
    GO
    --0  : AutoParameterization 기능 비활성화 (기본값)

    SELECT seq FROM TestTable WHERE vals = 1
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 4, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */

    SELECT seq FROM TestTable WHERE vals = 10
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 4, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */

    SELECT seq FROM TestTable WHERE vals = 100
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 22, 물리적 읽기 수 0, 미리 읽기 수 32, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */

    --------------------------------------------------
    -- Auto-Parameterization 설정
    --------------------------------------------------
    ALTER DATABASE TESTDB
    SET Parameterization FORCED;
    GO

    SELECT is_parameterization_forced FROM master.sys.databases where name = 'TestDB'
    GO
    --1  : AutoParameterization 기능 활성화

    --기존 실행 계획 및 실행 버퍼 풀 초기화
    DBCC FREEPROCCACHE
    DBCC DROPCLEANBUFFERS
    GO

    SELECT seq FROM TestTable WHERE vals = 1
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 4, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */

    SELECT seq FROM TestTable WHERE vals = 10
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 4, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */

    SELECT seq FROM TestTable WHERE vals = 100
    /*
    테이블 'TestTable'. 검색 수 1, 논리적 읽기 수 10021, 물리적 읽기 수 21, 미리 읽기 수 17, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
    */
     
     
    --CLEAN UP
    /*
    SET STATISTICS IO OFF
    GO

    USE MASTER
    GO

    DROP DATABASE TESTDB
    GO
    */
반응형

+ Recent posts