Все мы знаем что индексы это хорошо и я надеюсь, что все понимают, что большое их количество вызывает проблемы. Получается, что мы должны быть аккуратны при добавлении новых индексов. Так когда же добавление индекса принесёт пользу, а когда нет?
Вот мои советы, которые вы можете использовать при необходимости добавления новых индексов. Обратите внимание, что все советы применимы к OLTP системе, не к OLAP:
- Отсутствие кластерного индекса: В SQL Server крайне рекомендуется иметь кластерный индекс. По этой причине вы должны потратить время на создание качественного кластерного индекса. Есть всего несколько типов таблиц, таких как таблицы загрузки данных, которые могут не иметь кластерного индекса, в остальных случаях кластерный индекс будет полезен
- 1-5 индексов: Они помогают производительности системы? Проведите тестирование каждого индекса.
- 5-10 индексов: Здесь мы должны быть осторожны. Есть ли у нас неиспользуемые индексы? Возможно некоторые индексы можно объединить? При добавлении нового индекса обязательно проанализировать текущие.
- Более 10 индексов: Рекомендую рассматривать такую таблицу, как таблицу с избыточным количеством индексов. Прежде чем создавать новые индексы обязательно проведите анализ использования текущих и возможность их объединения. На такой таблице крайне нежелательно создавать новые индексы.
Перед создание индекса обязательно подумайте как часто он будет использоваться, если индекс будет использоваться 100 раз в минуту, то о нём однозначно стоит задуматься, но если он будет использоваться 1 раз в месяц, то нужно сильно подумать прежде чем создать его, так же можно создавать индексы только на момент выполнения отчётности, после чего их можно будет удалить.
Если вы добавили индекс, но он не используется, то удалите его. По возможности проводите регулярный «осмотр» ваших индексов (анализ их использования и возможность комбинации).
По мотивам — ссылка