Na podstawie tego zapytania, jeśli widzę małą liczbę odczytów (bardzo blisko 0 lub 0, np. 1 lub 2) oraz dużą lub umiarkowaną liczbę aktualizacji użytkowników (nie mogłem znaleźć wstawek ani usunięć przy tym zapytaniu) z dużą liczbę wierszy, teoretycznie powinienem usunąć indeks.
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
Chcę tutaj sprawdzić dokładność tego założenia. Na przykład indeks, który istnieje od ponad roku, ale nigdy nie został odczytany, ale wysoce zaktualizowany, wydaje się, że posiadanie go byłoby złym pomysłem. Czy istnieje scenariusz, w którym to założenie jest nieważne?