/**********************************************************************************************
-- Title : [2k5] 통계 정보가 갱신되는 경우와 자동 갱신 설정
-- Reference : mcpworld.com
-- Key word : 통계 statistics 컬럼 변경 카운터 auto_update_statistics sp_autostats norecompute
**********************************************************************************************/
◆ 빈 테이블에 데이터가 입력되는 경우
rows = 0 -> rows > 0
◆ 테이블의 행 수가 500행 이하이면서, 통계가 포함하고 있는 컬럼의 변경 카운터(colmodctr)가
500 이상인 경우
rows <= 500, colmodctr >= 500
◆ 테이블의 행 수가 500행 이상이면서, 통계가 포함하고 있는 컬럼의 변경 카운터(colmodctr)가
500 + (테이블의 전체 행 수의 20%) 인 경우
rows > 500, colmodctr >= 500 + rows * 0.20
◆ 자동 통계 갱신 설정 변경
데이터베이스 수준
? 해당 데이터베이스의 모든 통계에 대한 변경
ALTER DATABASE AdventureWorks SET AUTO_UPDATE_STATISTICS OFF;
테이블 수준
? 해당 테이블의 모든 통계에 대한 변경
UPDATE STATISTICS Person.Address WITH NORECOMPUTE;
EXEC sp_autostats 'Person.Address', 'ON';
개별 통계 수준
? 해당 통계에 대해서만 변경
UPDATE STATISTICS Person.Address(IX_Addr_1) WITH NORECOMPUTE;
EXEC sp_autostats 'Person.Address', 'ON', IX_Address_StateProvinceID;
Table Type | Empty Condition | Threshold when empty | Threshold when not empty |
Permanent Table | < 500 Rows | # of Changes >= 500 | # of Changes >= 500 + (20% of Cardinality) |
Temporary Table | < 6 Rows | # of Changes >= 6 | # of Changes >= 500 + (20% of Cardinality) |
◆ Permanet Table
- Row수가 500을 넘지 않을 경우 500Row 이상 변경되면 통계 업데이트
- Row수가 500을 넘을 경우 (500 + 전체Row의 20%)가 변경되면 통계 업데이트
◆ Temporary Table
- Row수가 500을 넘지 않을 경우 500Row 이상 변경되면 통계 업데이트
- Row수가6을 넘을 경우 (6 + 전체Row의 20%)가 변경되면 통계 업데이트