Verificando a fragmentação
Para verificar a fragmentação dos índices rode o seguinte comando SQL (basta definir o nome da base na primeira linha):USE NomedaBase
GO
SELECT a.index_id, name, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(DB_NAME()),
OBJECT_ID(N'dbo.OCR'), NULL, NULL, NULL) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id =
b.index_id WHERE name <> '' ORDER BY avg_fragmentation_in_percent DESC;
Recriar os índices de uma tabela via comando SQL (Basta definir o nome da tabela na primeira linha):
ALTER INDEX ALL ON NomedaTabelaREBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON);
GO
Recriar todos os índices do banco de dados (Definir o nome da base de dados na primeira linha)
Para recriar todos os índices da base de dados pode ser utilizado o seguinte comando SQL (Recomendamos que não seja executado em horário com muitos acessos a base de dados pois os índices ficarão indisponíveis durante o processo):use NomedaBase
GO
DECLARE @TableName VARCHAR(255)
DECLARE @sql NVARCHAR(500)
DECLARE @fillfactor INT
SET @fillfactor = 80
DECLARE TableCursor CURSOR FOR
SELECT OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName
FROM sys.tables
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @TableName +' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
EXEC (@sql)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO
Fonte:
http://wiki.locaweb.com.br/pt-br/%C3%8Dndices_MS_SQL
Emerson, muito obrigado por compartilhar seu conhecimento. Foi de grande ajuda para mim.
ResponderExcluirValeu
Daniel,
ExcluirObrigado por visitar o Blog, que bom ajudou.
Grande Abraço.
Emerson boa tarde !
ResponderExcluirMuito obrigado sou iniciante vai me ajudar.
Obrigado
Msg 102, Level 15, State 1, Line 4
ResponderExcluirIncorrect syntax near ')'.
Porque desse erro ao tentar executar Verificando a fragmentação ?