Sur la base de cette requête, si je vois une faible quantité de lectures totales (très proche de 0 ou 0, comme 1 ou 2) et une quantité élevée ou modérée de mises à jour utilisateur (je n'ai pas pu trouver d'insertions ou de suppressions avec cette requête) avec un grand nombre de lignes, je devrais en théorie supprimer l'index.
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
Je veux ici vérifier l'exactitude de cette hypothèse. Par exemple, un index qui existe depuis plus d'un an mais qui n'a jamais été lu, mais très mis à jour, semble être une mauvaise idée. Y a-t-il un scénario où cette hypothèse n'est pas valide?