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

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

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

6.08.2008 20:59:58
3 ОТВЕТА
РЕШЕНИЕ

Первое, что нужно знать:

При обновлении с 2000 до 2005 (с использованием detach и attach) убедитесь, что вы:

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

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

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

4
2.03.2012 07:24:06

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

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

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

0
6.08.2008 21:03:51

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

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

3
6.08.2008 21:11:53