Включить столбцы можно использовать только для предоставления столбцов в часть запроса SELECT
. Их нельзя использовать как часть индекса для фильтрации.
РЕДАКТИРОВАТЬ : Чтобы прояснить мою точку зрения, рассмотрим этот пример:
Я создаю простую таблицу и заполняю ее:
create table MyTest (
ID int,
Name char(10)
)
insert into MyTest
(ID, Name)
select 1, 'Joe' union all
select 2, 'Alex'
Теперь рассмотрим эти 3 индекса и соответствующие им планы выполнения для простого SELECT.
select ID, Name
from MyTest
where Name = 'Joe'
Случай 1 : индекс только идентификатора приводит к TANLE SCAN.
create index idx_MyTest on MyTest(ID)
Случай 2 : указатель идентификатора, включая имя. Несколько лучше, потому что индекс покрывает запрос, но я все еще получаю операцию SCAN.
create index idx_MyTest on MyTest(ID) include (Name)
Случай 3 : указатель на имя, включая идентификатор. Это лучшее. Индекс построен на столбце в моем предложении WHERE, поэтому я получаю операцию SEEK, и индекс покрывает запрос из-за включенного столбца.
create index idx_MyTest on MyTest(Name) include (ID)