El proceso
de volver a crear un índice quita y vuelve a crear el índice. Quita la
fragmentación, utiliza espacio en disco al compactar las páginas según el valor
de factor de relleno especificado o existente y vuelve a ordenar las filas del
índice en páginas contiguas. Cuando se especifica
ALL, todos los índices de la tabla se quitan y se vuelven a generar en una
única transacción.
En este
ejemplo utilizamos un cursor para obtener los nombres de las tablas de la base
de datos, para luego con esto, hacer en
un ciclo WHILE que regenere todos los índices de cada tabla.
--Regeneracion
de Indices, solo situarse en la BD necesaria
DECLARE @TableName varchar(255)
DECLARE TableCursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'BASE TABLE' and table_schema='dbo'
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('ALTER INDEX ALL ON [' + @TableName +
'] REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON)')
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
No hay comentarios:
Publicar un comentario