Com base nesta consulta, se houver uma quantidade baixa de leituras totais (muito próximas de 0 ou 0, como 1 ou 2) e uma quantidade alta ou moderada de atualizações do usuário (não foi possível encontrar inserções ou exclusões nesta consulta) com uma grande contagem de linhas, eu deveria, em teoria, remover o í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
Quero verificar aqui a precisão dessa suposição. Por exemplo, um índice que existe há mais de um ano, mas nunca foi lido, mas altamente atualizado, parece que seria uma má idéia. Existe um cenário em que essa suposição é inválida?