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?