Как узнать, когда / если у меня слишком много индексов?

26

Время от времени запускается Microsoft SQL Server Profiler, он предлагает мне кучу новых индексов и статистику для создания («... 97% оценки улучшения ...»).

Насколько я понимаю, каждый добавленный индекс может сделать SELECTзапрос SQL быстрее, но также UPDATEили INSERTзапрос медленнее, так как индексы должны быть скорректированы.

Интересно, когда у меня «слишком много» индексов / статистики?

Может быть, нет четкого ответа на это, но некоторые эмпирическое правило.

Уве Кейм
источник
1
Связанный: dba.stackexchange.com/questions/56/…
Ник Чаммас
Спасибо, Ник. Я тщательно искал Google и dba.se.com, прежде чем опубликовать свой вопрос. На мой взгляд, это скорее не связано. Я не хочу знать, нужен ли индекс, а скорее как определить, когда слишком много индексов делают UPDATEи INSERTоператоры слишком медленные.
Уве Кейм
3
Вы читали ответы там? Принятый ответ, например, содержит ссылки на некоторые сценарии анализа, которые могут помочь вам определить неиспользуемые индексы, которые следует удалить. Это может оказаться полезным для ответа на ваш вопрос о том, когда у вас «слишком много» индексов.
Ник Чаммас
2
Также см. Dba.stackexchange.com/q/3831/630
gbn

Ответы:

24

Ваш профиль нагрузки является наиболее важным фактором при ответе на этот вопрос.

  • Если ваша нагрузка интенсивна для чтения, вы хотите, чтобы индексы удовлетворяли вашим самым тяжелым или наиболее частым запросам.

  • Если ваша нагрузка интенсивна для записи, индексируйте внимательно. Индекс, чтобы удовлетворить потребности ОБНОВИТЬ, например, а также один или два самых дорогих SELECT.

  • Если ваша загрузка - OLAP, индексируйте экономно, так как вы все равно будете сканировать целевые таблицы.

Откуда ты знаешь, что у тебя слишком много индексов?

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

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

Ник Чаммас
источник
8

Если у вас есть индексы, которые поддерживаются, но никогда не используются (или используются редко), тогда вам нужно много индексов. Если все ваши индексы используются для повышения производительности пользователей, то вам не нужно много.

mrdenny
источник
Могу ли я предложить изменить два вхождения « на » на « тоже », так как я не могу их редактировать, так как мое редактирование должно было бы изменить минимум 6 символов?
Уве Кейм