SQL Server

Index Rebuild

서른마른다섯 2012. 7. 19. 11:01
인덱스를 리빌드하는 방법이 크게 4가지 정도가 있습니다.
1. ALTER INDEX …..
2. DBCC INDEXDEFRAG …. (SQL SERVER 2005 이후 버전)
3. DROP INDEX + CREATE INDEX
4. DBCC DBREINDEX (SQL SERVER 2000 이하 버전)
 
일반적으로 인덱스 리빌드를 하게되면 테이블 통계데이터가 갱신된다고 알려져 있습니다.
현재 서버팀에서 사용하고 있는 구문은 ALTER INDEX 구문으로 이것의 경우 테이블의 통계 데이터를 갱신하지 않습니다.
테이블의 통계데이터가 하는 역할이 쿼리 실행 계획을 세우는데 기여를 하므로 아주 중요한 것입니다.
 
테이블 통계를 갱신하는 방법이 몇가지 있습니다.
1. 먼저 테이블 데이터의 20% 이상이 DML 작업으로 변경이 일어났을 경우
- 테이블 데이터가 작을 때 와 클 때의 갭이 너무 큽니다.
2. 인덱스를 재생성할 경우
- 위에서 말씀 드린대로 ALTER INDEX 의 경우 제외입니다.
3. UPDATE STATISTICS 테이블
- 강제로 테이블 통계 갱신 수행
 
‘ALTER INDEX’ 이후에는 ‘UPDATE STATISTICS 테이블’ 을 해주는 것이 좋습니다.
 
EXECUTE sp_MSforeachtable 'UPDATE STATISTICS ?;'
 Sp_MSforeachtable 는 시스템 저장 프로시저로서 실행되는 DB 안의 모든 테이블에 대해서 작업을 합니다.
 
EXEC SP_MSforeachtable ‘SELECT * FROM ?;’ 과 같이 사용할 수 있습니다.
이와 유사한 것으로 MsforeachDB 가 있습니다.

 

'SQL Server' 카테고리의 다른 글

SSIS를 이용하여 Excel 데이터 DB로 넣기  (0) 2012.09.25
unable to begin a distributed transaction  (0) 2012.07.24
2008 서버에서 성능데이터 SQL Server로 수집하기  (0) 2012.05.21
MySQL DBLink  (0) 2012.04.05
COLLATION  (0) 2012.03.29