반응형

/**********************************************************************************************
-- Title : [2k5] 통계 정보 생성 및 출력
-- Reference : mcpworld.com
-- Key word : sp_helpstats show_statistics stat_header density_vector histogram
**********************************************************************************************/
--CLEAN UP
/*
USE MASTER;
GO

DROP DATABASE TESTDB;
GO
*/

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

USE TESTDB;
GO

-- 테이블 생성
CREATE TABLE Contact(
 FirstName varchar(60),
 LastName varchar(60),
 Phone varchar(15),
 Title varchar(15)
);
GO

-- 임시 데이터 입력
INSERT INTO Contact VALUES('James','Smith','425-555-1234','Mr');
INSERT INTO Contact VALUES('James','Andersen','425-555-1111','Mr');
INSERT INTO Contact VALUES('James','Andersen','425-555-3333','Mr');
INSERT INTO Contact VALUES('Christine','Williams','425-555-0000','Dr');
INSERT INTO Contact VALUES('Susa','Zhang','425-555-2222','Ms');
GO

-- Contact 테이블의 통계 정보 확인 : 통계 없음
sp_helpstats 'Contact', 'ALL';
GO
/*이 개체에 통계 또는 인덱스가 없습니다.*/

-- LastName 컬럼에 대해 조회 수행 후
SELECT * FROM Contact WHERE LastName = 'Andersen'; --AND FirstName = 'James'
GO

-- Contact 테이블의 통계 정보 확인 : LastName 컬럼에 대해 통계 생성
sp_helpstats 'Contact', 'ALL';
GO
/*
statistics_name     statistics_keys
--------------------------------------------
_WA_Sys_00000002_7B905C75  LastName
*/

--해당 통계에 대한 상세 정보 조회 (종합)
DBCC SHOW_STATISTICS('Contact','_WA_Sys_00000002_7B905C75');
GO

--해당 통계에 대한 상세 정보 조회 중 HEADER 부분만 출력
DBCC SHOW_STATISTICS('Contact','_WA_Sys_00000002_7B905C75') WITH STAT_HEADER;
GO
/*
   Name    통계의 이름
   Updated    통계가 마지막으로 업데이트된 날짜와 시간
   Rows    테이블의 행 수
   Rows Sampled  통계 정보를 위해 샘플링된 행 수
   Steps    배포 단계 수
   Density    첫 번째 인덱스 열 접두사의 선택도
   Average key length 모든 인덱스 열의 평균 길이
   String Index  문자열 요약 통계 여부
 */

--해당 통계에 대한 상세 정보 조회 중 DENSITY 부분만 출력
DBCC SHOW_STATISTICS('Contact','_WA_Sys_00000002_7B905C75') WITH DENSITY_VECTOR;
GO
/*
   All density  인덱스 열 접두사 집합의 선택도
   Average length  인덱스 열 접두사 집합의 평균 길이
   Columns    All density 및 Average length가 표시되는 인덱스 열 접두사의 이름
*/

--해당 통계에 대한 상세 정보 조회 중 HISTOGRAM 부분만 출력
DBCC SHOW_STATISTICS('Contact','_WA_Sys_00000002_7B905C75') WITH HISTOGRAM;
GO
/*
   RANGE_HI_KEY  히스토그램 단계의 상한 값
   RANGE_ROWS  상한을 제외한 히스토그램 단계 내에 있는 테이블의 예상 행 수
   EQ_ROWS   히스토그램 단계의 상한과 값이 같은 테이블의 예상 행 수
   DISTINCT_RANGE_ROWS  상한을 제외한 히스토그램 단계 내에 있는 고유한 예상 값 수
   AVG_RANGE_ROWS    상한을 제외한 히스토그램 단계 내에 있는 중복 값의 평균 수
*/

-- 해당 테이블에 인덱스 생성
CREATE NONCLUSTERED INDEX Phone on Contact(Phone);
GO

-- Contact 테이블의 통계 정보 확인 : Phone 컬럼에 대해 통계 생성
sp_helpstats N'Contact', 'ALL'
GO

-- 수동 통계 추가
CREATE STATISTICS FirstLast ON Contact(FirstName,LastName)
GO

-- Contact 테이블의 통계 정보 확인 : FirstLast 통계 생성
sp_helpstats N'Contact', 'ALL'
GO

-- CLEAN UP
/*
USE MASTER;
GO

DROP DATABASE TESTDB;
GO
*/

반응형

+ Recent posts