Это странная ситуация, но я надеюсь, что у кого-то есть ответ.
Во время некоторых проблем с производительностью мы добавили в таблицу NONCLUSTERED INDEX, как было запрошено sp_BlitzIndex
. Мы проверили его использование на следующий день, и оно показало 0 операций чтения ( 0 сканирований / поисков, 0 одноэлементных поисков ), поэтому мы отключили его.
Уже в следующую минуту мы получаем жалобу на ту же медлительность приложения (проблемы с производительностью), которую мы пытались сначала проверить и устранить, когда добавили INDEX.
Теперь, я знаю в теории, это звучит чисто случайно. Индекс был доказуемо, измеримо, НЕ ИСПОЛЬЗОВАН . Его отключение НЕ ДОЛЖНО приводить к снижению производительности запросов. Но это почти СЛИШКОМ случайно.
Вопрос
Итак, мой вопрос, достаточно просто, таков:
Возможно ли вообще , что НЕКЛАСТЕРНЫЙ ИНДЕКС, чья статистика использования (из DMV / sp_BlitzIndex
) НЕТ использования, все еще как-то помогает производительности запросов для уязвимой таблицы?
Ответы:
Да, возможно, когда SQL Server решит, что статистика из этого индекса является более точной / полезной, и использует эту статистику для оценки и составления плана.
Я сталкивался с ситуациями, когда SQL Server решил использовать статистику из одного индекса и сканировать / искать другой индекс.
Изменить - это может быть неприменимо, потому что я только что понял, что вы отключили индекс. Я не проверял этот сценарий.
источник
CREATE STATISTICS
вместоCREATE INDEX
.