Если вы выбираете набор столбцов из таблицы больше, чем те, которые покрываются столбцами в выбранных индексах, то вы неизбежно подвергнетесь поиску закладок в плане запросов, где обработчик запросов должен извлечь не столбцы из кластеризованного индекса с использованием идентификатора ссылки из конечных строк в связанном некластеризованном индексе.
По моему опыту, поиск в закладках действительно может снизить производительность запросов из-за объема необходимых дополнительных чтений и того факта, что каждая строка в кластерном индексе должна обрабатываться индивидуально. Вот почему я пытаюсь сделать так, чтобы индексы NC охватывали всюду, где это возможно, что проще для небольших таблиц, где требуемые планы запросов хорошо известны, но если у вас большие таблицы с большим количеством столбцов с ожидаемыми произвольными запросами, то этого, вероятно, не будет возможно.
Это означает, что вы получаете выгоду только за свой доллар с индексом NC любого вида, если индекс покрывает или выбирает достаточно малый набор данных, который снижает стоимость поиска по закладке - действительно, вы можете обнаружить, что Оптимизатор запросов даже не будет смотреть на ваши индексы, если цена будет непомерно высокой по сравнению со сканированием кластерного индекса, где все столбцы уже доступны.
Таким образом, нет смысла создавать индекс, если вы не знаете, что индекс будет оптимизировать результат данного запроса. Следовательно, значение индекса пропорционально проценту запросов, которые он может оптимизировать для данной таблицы, и это можно определить только путем анализа выполняемых запросов, что в точности и делает мастер настройки индекса.
итого в итоге:
1) Не индексируйте каждый столбец. Это классическая преждевременная оптимизация. Вы не можете заранее оптимизировать большую таблицу с индексами для всех возможных планов запросов.
2) Не индексируйте ни один столбец, пока вы не захватите и не запустите базовую рабочую нагрузку с помощью мастера настройки индекса. Эта рабочая нагрузка должна соответствовать шаблонам использования вашего приложения, чтобы мастер мог определить, какие индексы действительно помогут повысить производительность ваших запросов.