256
данных средней сложности. В разработке оптимальных индексов может помочь
понимание характеристик базы данных, запросов и столбцов данных.
При проектировании индекса следует учитывать следующие
рекомендации, связанные с базами данных
• Большое количество индексов в таблице снижает производительность
инструкций INSERT, UPDATE, DELETE и MERGE, потому что при
изменении данных в таблице все индексы должны быть изменены
соответствующим образом.
• Избегайте использования чрезмерного количества индексов для
интенсивно обновляемых таблиц и следите, чтобы индексы были узкими,
то есть содержали как можно меньше столбцов.
• Используйте большое количество индексов, чтобы улучшить
производительность запросов для таблиц с низкими требованиями к
обновлениям, но большими объемами данных. Большое число индексов
может повысить производительность запросов, которые не изменяют
данных, таких как инструкции SELECT, поскольку у оптимизатора
запросов будет больший выбор индексов при определении самого
быстрого способа доступа.
• Индексирование маленьких таблиц может оказаться не лучшим выбором,
так как поиск данных в индексе может потребовать у оптимизатора
запросов больше времени, чем простой просмотр таблицы.
Следовательно, для маленьких таблиц индексы могут вообще не
использоваться, но, тем не менее, их необходимо поддерживать при
изменении данных в таблице.
При проектировании индекса следует принимать во внимание следующие
рекомендации, связанные с обработкой запросов.
• Следует создавать индексы для всех столбцов, которые часто
используются в предикатах и условиях соединения в запросах. Однако
нужно избегать добавления столбцов без необходимости. Добавление
слишком большого числа индексных столбцов может отрицательно
повлиять на количество свободного места на диске и на
производительность поддержания индекса.
• Покрывающие индексы могут повысить производительность запросов,
так как данные, необходимые для удовлетворения требований запроса,
присутствуют в самом индексе. Таким образом, для получения
запрашиваемых данных требуются только страницы индекса, а не
страницы данных таблицы или кластеризованного индекса;
следовательно, уменьшается общий объем операций дискового ввода-
вывода. Например: запрос по столбцам a и b таблицы, у которой есть
составной индекс, созданный на основе столбцов a, b и c может найти
нужные данные, пользуясь только этим индексом.
• Запросы следует составлять так, чтобы они вставляли или изменяли как
можно больше строк одной инструкцией, вместо того, чтобы
использовать для обновления тех же строк нескольких запросов.