/**********************************************************************************************
-- 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
*/
[2k5] 통계 정보 생성 및 출력
2008. 9. 9. 11:27
반응형
반응형