Если ваш запрос имеет форму:
select top (100) t.*
from t
order by col;
Тогда индекс на col
поможет.SQL Server найдет 100 строк по индексу, а затем вернет остальные столбцы.
Если у вас 9 таких столбцов, то отдельный индекс для каждого из них ускорит запрос.
Если вы можете начать объединение столбцов, индексы помогут только при выборе одного столбца.Итак, рассмотрим следующие пять предложений:
order by col1
order by col1, col2
order by col1, col2, col3
order by col1, col3
order by col1, col3, col2
Чтобы полностью охватить эти order by
s, вам понадобятся два индекса - (col1, col2, col3)
и (col1, col3, col2)
.Ведущие столбцы в индексе должны полностью соответствовать столбцам в order by
- в том же порядке и без пробелов.
Также обратите внимание, что каждый индекс добавляет немного накладных расходов для вставки, обновления иудалить операции.Тем не менее, кажется, что запрос данных является более серьезной проблемой, поэтому вам, возможно, не придется беспокоиться об этом.