Чи може невикористаний НЕКЛЮЧЕНИЙ INDEX все ж підвищити швидкість запитів?


13

Це дивна ситуація, але я сподіваюся, що хтось має відповідь.

Під час усунення несправностей з продуктивністю ми додали в таблицю НЕКЛЮЧЕНИЙ ІНДЕКС, як цього вимагав sp_BlitzIndex. Ми перевірили його використання на наступний день, і він показав 0 читань ( 0 сканування / пошуку, 0 однократних пошукових запитів ), тому ми його відключили.

На наступну хвилину ми отримуємо скаргу на таку ж повільність у застосуванні (проблеми з роботою), яку ми намагалися перевірити та вирішити в першу чергу, коли ми додали INDEX.

Тепер, я знаю теоретично, це звучить чисто випадково. ІНДЕКС був доказовим, вимірним, НЕ ВИКОРИСТОВАНО . Вимкнення його НЕ БУДЕ викликати погіршення продуктивності запитів. Але це майже ТОО збіглося.

Питання

Отже, моє питання, досить просто, таким чином:

Чи взагалі можливо , що НЕЗАКОНОВАНИЙ ІНДЕКС, чиї статистики використання (із DMV / / sp_BlitzIndex) показують НЕ використання, все ще допомагають виконувати запити як-небудь на порушеній таблиці?


PS: Будь ласка, пожаліть мені поговорку "Іди перевіри!" відповідь; Мені доводиться чекати завтра, щоб перевірити його, оскільки таблиця активно використовується, а індекс не буде повторно ввімкнено (відтворено) до вікна нічного обслуговування. А характер проблем із виконанням був спорадичним і важко відтворити; Я не кажу "Ні, я не перевірятиму це", я кажу, що знаю, що ми повинні протестувати, і планувати це, але я прошу теорії та / або досвіду.
NateJ

1
Ви можете вважати цю публікацію в блозі корисною; brentozar.com/archive/2016/11/…
Річ Беннер

Відповіді:


13

Так, це може, коли SQL Server вирішить, що статистика з цього індексу є більш точною / корисною та використовує статистику для того, щоб робити оцінки та скласти план.

Я стикався з ситуаціями, коли SQL Server вирішив використовувати статистику з одного індексу та сканувати / шукати інший індекс.

Редагування - це може бути непридатним, тому що я просто зрозумів, що ви відключили індекс. Я не перевіряв цей сценарій.


Дякую за чітку, стисну відповідь! Так, ні, його не було відключено відразу, він був включений і повністю "живий", поки я не відключив його секунди перед тим, як скарга користувача / скарга / продуктивність-уповільнення. Ти хороший :)
NateJ

1
@NateJ Ця теорія може бути перевірена CREATE STATISTICSзамість CREATE INDEX.
Якуб Каня
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.