Как узнать, какие рекомендации по индексам SQL Server 2005 следует применять, если таковые имеются?

Мы'находимся в процессе обновления одного из наших экземпляров SQL Server с 2000 до 2005. Я установил приборную панель производительности (http://www.microsoft.com/downloads/details.aspx?FamilyId=1d3a4a0d-7e0c-4730-8204-e419218c1efc&displaylang=en) для доступа к некоторым отчетам высокого уровня. Один из отчетов показывает отсутствующие (рекомендуемые) индексы. Я думаю, что это основано на каком-то системном представлении, которое поддерживается оптимизатором запросов.

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

Решение

Первое, на что следует обратить внимание:

При переходе с 2000 на 2005 (с помощью отсоединения и присоединения) убедитесь, что вы:

  1. Установите совместимость на 90
  2. Перестройте индексы
  3. Запустите обновление статистики с полным сканированием

Если вы не сделаете этого, вы получите неоптимальные планы.

Если таблица используется в основном для записи, вам нужно как можно меньше индексов. ЕСЛИ таблица используется для большого количества запросов на чтение, вы должны убедиться, что предложение WHERE покрывается индексами.

Комментарии (0)

Совет, который вы получили, правильный. Попробуйте их все, один за другим.

Нет никакой замены тестированию, когда речь идет о производительности. Пока вы не докажете это, вы ничего не сделали.

Комментарии (0)

Лучше всего изучить наиболее распространенные типы запросов, которые происходят с вашей базой данных, и создать индексы на основе этих исследований.

Например, если есть таблица, в которой хранятся посещения сайта, в которую очень часто пишут, но из которой почти ничего не читают. Тогда не индексируйте эту таблицу.

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

Комментарии (0)