데이터를 입력,수정,삭제를 하다보면 인덱스에 조각화가 일어난다.
조각화가 많아지면 성능이 느려진다.
1. 인덱스를 다시 작성하는 방법에는
① DBCC DBREINDEX
② DBCC INDEXDEFRAG
③ ALTER INDEX ALL ON 테이블명 REBUILD WITH (PAD_INDEX = ON, FILLFACTOR = 90)
여기에서 속도도 가장 빠르고 효율적인 것은 MS-SQL 2005 이상에서 지원하는 아래의 쿼리다.
ALTER INDEX ALL ON 테이블명 REBUILD WITH (PAD_INDEX = ON, FILLFACTOR = 90)
2. 해당 데이터베이스의 모든 테이블의 모든 인덱스를 재정리하는 쿼리
=========================================================================================
DECLARE @i int, @sql varchar(1000)
DECLARE @tablename varchar(1000),@ownerName varchar(1000)
SET @i = 1
DECLARE DB_Cursor CURSOR FOR
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_SCHEMA, TABLE_NAME
OPEN DB_Cursor
FETCH NEXT FROM DB_Cursor
INTO @ownerName, @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @ownerName + '.' + @tablename + ' REBUILD WITH (PAD_INDEX = ON, FILLFACTOR = 90) '
EXEC (@sql)
PRINT CONVERT(VARCHAR, @i) + '__' + @ownerName + '.' + @tablename + '............ OK'
SET @i = @i + 1
FETCH NEXT FROM DB_Cursor
INTO @ownerName, @tablename
END
CLOSE DB_Cursor
DEALLOCATE DB_Cursor
=========================================================================================
'MS-SQL' 카테고리의 다른 글
테이블 스키마를 dbo로 변경 (0) | 2013.04.14 |
---|---|
전체 테이블의 모든 인덱스 조회 (0) | 2013.01.03 |
MS-SQL 전체 테이블 크기 조회 (용량순, 테이블이름순) (0) | 2012.08.16 |
declare cursor (0) | 2012.06.12 |
Join절 Update (0) | 2011.11.03 |