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

 

 

2 comentarios en «Reconstruir Todos los Indices de una base de datos.»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.