Si eres como yo y utilizas el asistente para optimización de base de datos de Sql Server sin mucho criterio (ya sé que tengo que mejorar pero a veces la prisa apremia), te paso este script que deja la base de datos limpia de esos índices que a veces se descontrolan y ocupan más de lo necesario.
DECLARE @stmt NVARCHAR(4000)
DECLARE c_dta_index CURSOR
READ_ONLY
FOR
SELECT
OBJECT_NAME(i.object_id) AS tableName,
i.name AS indexName
FROM sys.indexes AS i
INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN sys.allocation_units AS a ON p.partition_id = a.container_id
WHERE i.name LIKE '[_]dta[_]%'
OPEN c_dta_index
DECLARE @tableName NVARCHAR(4000)
DECLARE @indexName NVARCHAR(4000)
FETCH NEXT FROM c_dta_index INTO @tableName, @indexName
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
SET @stmt = 'DROP INDEX ' + @tableName + '.' + @indexName
EXECUTE(@stmt)
END
FETCH NEXT FROM c_dta_index INTO @tableName, @indexName
END
CLOSE c_dta_index
DEALLOCATE c_dta_index
Un saludo!
No hay comentarios:
Publicar un comentario