Как правило, каждый запрос оптимизируется отдельно.Например, индексы, которые может предложить Советник по настройке, могут быть хорошими для некоторых запросов, но могут оказаться бесполезными для других запросов.То же самое можно сказать и о кластеризации кучи и разбиении данных.
Наивным решением было бы добавить все индексы, которые нужны всем запросам.Даже если это можно сделать, слишком много индексов замедлит все операторы SQL для изменения данных.То есть все INSERT
с, UPDATE
с и DELETE
с станут медленными и дорогими.
Итак, что вы должны делать?Это зависит от вашего конкретного случая.Мое [очень личное] практическое правило не должно превышать 10 индексов на таблицу.
Конечно, если ваша таблица имеет высокую скорость обновления / вставки / удаления, я бы рассмотрел нижний предел.
С другой стороны, если у данных вашей таблицы низкая / нулевая частота модификации (в основном таблица только для чтения), то вы можете поднять этот предел и даже, возможно, добавить столько индексов, сколько советник по настройке предлагает.
В конце концов, эмпирическое правило - всего лишь руководство.Вам нужно будет попытаться найти лучший баланс между быстрым SELECT
с и быстрым UPDATE
с.