Некластеризованный индекс содержит как список индексируемых столбцов, так и список столбцов, которые «включены» для быстрой ссылки.
Например, допустим, у вас есть таблица с 100 столбцами, но вы почти исключительно запрашиваете 5 из них, основываясь на дате.например,
select col1, col2, col3, col4, YourDate from YourTable where YourDate = '???'
Если вы проиндексировали только столбец даты, вам придется выполнить так называемый поиск RowID (или поиск по закладкам).Вы эффективно найдете нужный набор строк, но вам нужно будет вернуться к физической таблице, чтобы получить остальные 4 столбца (col1-col4), которые вы хотите выбрать.
Если вы создаете индекс с включеннымсписок столбцов, эти столбцы хранятся в индексе именно для этой цели.
create nonclustered index ix_YourTable on YourTable (
YourDate)
include (
col1, col2, col3, col4)
Теперь вы не возвращаетесь к таблице, чтобы получить столбец col1-4, вы читаете их непосредственно из индекса.Очевидно, это увеличивает объем памяти, необходимый для этого индекса.
Вы также должны знать, что если ваш частый запрос изменится на
select col1, col2, col3, col4, col5, YourDate from YourTable where YourDate = '???'
Вы по-прежнему будете использовать индекс, но выЯ буду выполнять поиск RID, чтобы получить данные для col5.Вам нужно добавить col5 в список включения вашего индекса, чтобы эффективно на него ссылаться.
Надеюсь, это поможет!