terça-feira, fevereiro 01, 2011

Rebuild Index

Abaixo segue um script que executa o rebuild em uma determinada database, este script foi desenvolvido pelo meu colega de trabalha Marcelo, este script resolveu um problema de um sistema de biblioteca, onde as buscas demoravam muito, após executar o script a performance do sistema melhorou em muito.

DECLARE @Database VARCHAR ( 255 )
DECLARE @Table VARCHAR ( 255 )
DECLARE @cmd NVARCHAR ( 500 )

DECLARE DatabaseCursor CURSOR FOR
SELECT name FROM master.dbo.sysdatabases
WHERE name IN ( 'minhadatabase')

ORDER BY 1

OPEN DatabaseCursor

FETCH NEXT FROM DatabaseCursor INTO @Database
WHILE @@FETCH_STATUS = 0
BEGIN

SET @cmd = 'DECLARE TableCursor CURSOR FOR SELECT table_catalog + ''.'' + table_schema + ''.'' + table_name as tableName
FROM ' + @Database + '.INFORMATION_SCHEMA.TABLES WHERE table_type = ''BASE TABLE'''

EXEC ( @cmd )
OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @Table
WHILE @@FETCH_STATUS = 0
BEGIN

SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REBUILD ' -- WITH (FILLFACTOR = ' + CONVERT ( VARCHAR ( 3 ), @fillfactor ) + ')'
EXEC ( @cmd )

FETCH NEXT FROM TableCursor INTO @Table
END

CLOSE TableCursor
DEALLOCATE TableCursor

FETCH NEXT FROM DatabaseCursor INTO @Database
END
CLOSE DatabaseCursor
DEALLOCATE DatabaseCursor

Nenhum comentário: