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