Виходячи з цього запиту, якщо я бачу низький обсяг прочитаних (дуже близький до 0 або 0, як-от 1 або 2) і високий або помірний кількість оновлень користувачів (я не міг знайти вставок або видалення за допомогою цього запиту) з велика кількість рядків, я теоретично повинен видалити індекс.
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
Я хочу перехресно перевірити тут точність цього припущення. Наприклад, індекс, який існував більше року, але його ніколи не читали, але сильно оновлювали, здається, це було б поганою ідеєю. Чи існує сценарій, коли це припущення є недійсним?