Как узнать, когда/если у меня слишком много индексов?
-
16-10-2019 - |
Вопрос
Запуск Microsoft SQL Server Profiler время от времени, он предлагает мне кучу новых индексов и статистики для создания («... 97% оценочных улучшений ...»).
От моего понимания каждый добавленный индекс может сделать SQL SELECT
запросить быстрее, но также UPDATE
или же INSERT
Запрос медленнее, так как индексы должны быть отрегулированы.
Мне интересно, когда у меня есть «слишком много» индексов/статистики?
Может быть, нет четкого ответа на это, но какое-то правило.
Решение
Ваш профиль загрузки является наиболее важным фактором в ответе на этот вопрос.
Если ваша нагрузка является интенсивной, вы хотите, чтобы индексы удовлетворили ваши самые тяжелые или самые частые запросы.
Если ваша нагрузка является интенсивной, индекс осторожно. Индекс, чтобы удовлетворить, например, поиск потребностей обновлений, а также ваш один или два наиболее дорогого выбора.
Если ваша нагрузка является олап, индекс экономно, так как вы все равно сканируете целевые таблицы.
Откуда вы знаете, что у вас слишком много индексов?
Когда вы увидите, некоторые из них не используются по любым запросам.
Частое удаление, обновление или вставка показывает план запроса, который включает в себя несколько дорогих изменений индекса (то есть не классифицированный индекс вставлять, Обновить, или же Удалить) Используйте свое суждение, чтобы определить, стоит ли штраф о этих заявлениях DML, стоит из -за того, что вы получаете из индексов, которые необходимо обновлять.
Другие советы
Если у вас есть индексы, которые поддерживаются, но никогда не используются (или используются редко), то у вас есть многие индексы. Если все ваши индексы используются для повышения производительности пользователя, вам не нужно много.