Як знати, коли / якщо у мене занадто багато індексів?


26

Запуск Microsoft SQL Server Profiler раз у раз пропонує мені створити нові індекси та статистику для створення ("... 97% оцінюється покращення ...").

З мого розуміння, кожен доданий індекс може зробити SELECTзапит SQL швидше, але також UPDATEабо INSERTзапит повільніше, оскільки індекси повинні бути скориговані.

Що мені цікаво, коли я маю "занадто багато" індексів / статистики?

Можливо, на це немає однозначної відповіді, але деяке правило.



Дякую, @Nick. Я ретельно шукав Google і dba.se.com, перш ніж ставити запитання. На мою думку, це досить непов’язано. Я не хочу знати, чи потрібен індекс, а скоріше, як визначити, коли занадто багато індексів UPDATEі INSERTзаяви занадто повільні.
Uwe Keim

3
Ви читали відповіді там? Наприклад, прийнята відповідь посилається на деякі сценарії аналізу, які допоможуть вам визначити невикористані індекси, які слід видалити. Ви можете виявити це корисним у відповіді на запитання про те, коли у вас "занадто багато" індексів.
Nick Chammas

2
Також дивіться dba.stackexchange.com/q/3831/630
gbn

Відповіді:


24

Ваш профіль навантаження є найважливішим фактором відповіді на це питання.

  • Якщо ваше навантаження є інтенсивним для читання, ви хочете, щоб індекси задовольнили ваші найважчі або найчастіші запити.

  • Якщо ваше навантаження є інтенсивним для запису, ретельно індексуйте. Індекс, щоб задовольнити запит на оновлення, наприклад, а також на один або два найдорожчих SELECT.

  • Якщо ваше навантаження є OLAP, помірковано індексуйте, оскільки ви все одно будете сканувати цільові таблиці.

Звідки ви знаєте, що у вас занадто багато індексів?

  • Коли ви бачите, що деякі з них не використовуються жодними запитами.

  • Часті DELETE, UPDATE або INSERT показують план запитів, який включає декілька дорогих змін індексу (тобто некластеризовані вставки , оновлення чи видалення ). Скористайтеся своїм судженням, щоб визначити, чи варто покарання для цих висловлювань DML виграш, який ви отримуєте від індексів, які потрібно оновити.


8

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


Чи можу я запропонувати змінити два випадки " на " на " занадто ", оскільки я не можу їх редагувати, оскільки для моєї редакції потрібно змінити мінімум 6 символів?
Уве Кеїм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.