Reconstruir Todos los Indices de una base de datos.

 

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
Ahora si solo buscamos reorganizar el indice sutituimos el REBUILD por REORGANIZE
  
–Reorganización
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 +
 ‘] REORGANIZE)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor

 
 

Leave a Reply

Your email address will not be published. Required fields are marked *