Что вы делаете, чтобы убедиться, что новый индекс не замедляет запросы?

, когда мы добавляем или удалите новый индекс, чтобы ускорить что-то, мы можем в конечном итоге замедлять что-то еще. Чтобы защитить от таких случаев, после создания нового индекса я выполняю следующие шаги:

  1. Запустите профилировщик,
  2. запустить сценарий SQL, который содержит много запросов, которые я не хочу замедлить
  3. Загрузить трассировку Из файла в таблицу
  4. анализируют процессор, читают и записывают из трассы от результатов предыдущих прогонов, прежде чем добавить (или удалить) индекс.

Это своего рода автоматизирована и вид делает то, что я хочу. Однако я не уверен, есть ли лучший способ сделать это. Есть ли какой-то инструмент, который делает то, что я хочу?

Править 1 Человек, который проголосовал, чтобы закрыть мой вопрос, не могли бы вы объяснить свои причины?

Редактировать 2 Я проушинул, но не нашел ничего, что Объясняет, как добавление индекса может замедлиться выбирать. Однако это хорошо известный факт, поэтому должно быть чего-то где-то. Если ничего не придет, я могу написать несколько примеров позже.

Отредактируйте 3 Один из таких примеров: два столбца сильно коррелируются, как высота и вес. У нас есть индекс на высоте, что не достаточно избирательно для нашего запроса. Мы добавляем индекс по весу и запускаем запрос с двумя условиями: диапазон на высоте и диапазон на весах. Поскольку оптимизатор не знает о корреляции, она крайне недооценивает кардинальность нашего запроса.

Другим примером является добавление индекса на растущей колонне, например, показывать, может серьезно замедлить запрос с состоянием, такими как Shortdate> ComedAtaTeaftercreatingTheTeindex.

19
задан A-K 17 September 2011 в 02:24
поделиться