Время от времени запускается Microsoft SQL Server Profiler, он предлагает мне кучу новых индексов и статистику для создания («... 97% оценки улучшения ...»).
Насколько я понимаю, каждый добавленный индекс может сделать SELECT
запрос SQL быстрее, но также UPDATE
или INSERT
запрос медленнее, так как индексы должны быть скорректированы.
Интересно, когда у меня «слишком много» индексов / статистики?
Может быть, нет четкого ответа на это, но некоторые эмпирическое правило.
sql-server
performance
index
index-tuning
Уве Кейм
источник
источник
UPDATE
иINSERT
операторы слишком медленные.Ответы:
Ваш профиль нагрузки является наиболее важным фактором при ответе на этот вопрос.
Если ваша нагрузка интенсивна для чтения, вы хотите, чтобы индексы удовлетворяли вашим самым тяжелым или наиболее частым запросам.
Если ваша нагрузка интенсивна для записи, индексируйте внимательно. Индекс, чтобы удовлетворить потребности ОБНОВИТЬ, например, а также один или два самых дорогих SELECT.
Если ваша загрузка - OLAP, индексируйте экономно, так как вы все равно будете сканировать целевые таблицы.
Откуда ты знаешь, что у тебя слишком много индексов?
Когда вы видите, что некоторые из них не используются никакими запросами.
Частые DELETE, UPDATE или INSERT показывают план запроса, который включает в себя несколько дорогостоящих изменений индекса (то есть вставка , обновление или удаление некластерного индекса ). Используйте свое суждение, чтобы определить, стоит ли штраф за эти операторы DML выгоды, которую вы получаете от индексов, которые должны быть обновлены.
источник
Если у вас есть индексы, которые поддерживаются, но никогда не используются (или используются редко), тогда вам нужно много индексов. Если все ваши индексы используются для повышения производительности пользователей, то вам не нужно много.
источник