Cuando en una tabla con muchas filas tenemos varios índices sin usar nos genera dos grandes problemas , uno el espacio desperdiciado por los índices que no se usan y el otro y tal vez mas importante es el consumo que generan estos índices cuando se le hace un Insert o un Update en la tabla.
Por medio de esta consulta podemos corroborar la cantidad de usos que se le dieron a los índices de cierta tabla.
Se debe prestar atención a las columnas user_seeks, user_scans, user_lookups, las mismas indican la cantidad de veces que se usaron desde el ultimo reinicio del servidor, si las tres columnas están en 0 se podría borrar el índice ya que esta consumiendo recursos y no se está usando.
Remplazar 'empleado' por el nombre de la tabla a analizar:
Declare @table as nvarchar(200)
Set @table='empleado'
SELECT i.name,s.*
FROM sys.indexes i
INNER JOIN sys.objects o ON o.object_id = i.object_id
JOIN sys.dm_db_index_usage_stats s
ON i.object_id=s.object_id AND i.index_id=s.index_id AND database_id = DB_ID()
WHERE objectproperty(o.object_id,'IsUserTable') = 1
and object_name(i.object_id) =@table
order by user_seeks,user_scans,user_lookups
No hay comentarios:
Publicar un comentario