Según esta consulta, si veo una cantidad baja de lecturas totales (muy cerca de 0 o 0, como 1 o 2) y una cantidad alta o moderada de actualizaciones de usuario (no pude encontrar inserciones o eliminaciones con esta consulta) con un recuento de filas grandes, en teoría debería eliminar el índice.
SELECT DISTINCT
OBJECT_NAME(s.[object_id]) AS ObjectName
, p.rows TableRows
, i.name AS [INDEX NAME]
, (user_seeks + user_scans + user_lookups) AS TotalReads
, user_updates UserUpdates
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.[object_id] = s.[object_id]
AND i.index_id = s.index_id
INNER JOIN sys.partitions p ON p.object_id = i.object_id
WHERE OBJECTPROPERTY(s.[object_id],'IsUserTable') = 1
AND s.database_id = DB_ID()
AND i.name IS NOT NULL
ORDER BY (user_seeks + user_scans + user_lookups) ASC
Quiero verificar la precisión de esta suposición aquí. Por ejemplo, un índice que existe desde hace más de un año pero que nunca se ha leído, pero que está muy actualizado, parece que sería una mala idea tenerlo. ¿Hay algún escenario en el que esta suposición no sea válida?
fuente
Sí, la vista solo tiene estadísticas desde el último reinicio. Para ayudar a mitigar eso, configuré un trabajo que ejecutó una consulta como la que publicó mensualmente por la mañana antes de que nuestra ventana de mantenimiento comenzara a capturar la información cada mes antes de que el servidor se reiniciara. Eso me permitió volver más atrás y observar las tendencias a lo largo del tiempo. También tuve una segunda consulta que se ejecutó buscando índices posiblemente perdidos.
Otra cosa a considerar es qué otros índices están en la tabla. Es posible que no se esté utilizando porque es en su mayoría o completamente un duplicado de otro índice. Si. El servidor SQL le permite crear dos índices diferentes pero idénticos, por lo que es posible que sea completamente redundante.
También puede ver cuál podría ser el plan de consulta para una consulta que usó ese índice si ese índice se eliminó. ¿Tendría que usar otro índice o probablemente tendría que recurrir a una exploración de tabla completa?
Los índices terminan siendo tanto arte como ciencia porque es realmente difícil saber todo sobre lo que se podría ejecutar y, de todos modos, termina cambiando con frecuencia.
fuente