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