Dołącz kolumny mogą być wykorzystywane wyłącznie do zasilania kolumny do części SELECT
zapytania. Nie mogą być używane jako część indeksu do filtrowania.
EDIT: Aby dokładniej wyjaśnić swój punkt, należy rozważyć następujący przykład:
utworzyć prostą tabelę i wypełnić go:
create table MyTest (
ID int,
Name char(10)
)
insert into MyTest
(ID, Name)
select 1, 'Joe' union all
select 2, 'Alex'
Rozważmy teraz te 3 indeksów i odpowiadających im planów wykonawczych dla prosty WYBIERZ.
select ID, Name
from MyTest
where Name = 'Joe'
Przypadek 1: Indeks na zaledwie wyników ID w tabeli SCAN.
create index idx_MyTest on MyTest(ID)
Przypadek 2: Indeks identyfikatora tym imieniu. Nieco lepiej, ponieważ indeks obejmuje zapytanie, ale nadal otrzymuję operację SCAN.
create index idx_MyTest on MyTest(ID) include (Name)
Przypadek 3: Indeks nazwisk na tym ID. To jest najlepszy. Indeks jest zbudowany na kolumnie w mojej klauzuli WHERE, więc otrzymuję operację SEEK, a indeks obejmuje zapytanie z powodu uwzględnionej kolumny.
create index idx_MyTest on MyTest(Name) include (ID)
Dzięki Joe. Widzę, gdzie nie byliby sami pomocni, ale gdyby nie można ich było użyć do filtrowania, nie byłoby sensu ich istnienia. – PseudoToad
Nie mam nic przeciwko głosowaniu w dół, jeśli się mylę, ale nie podoba mi się anonimowe głosowanie bez żadnego wyjaśnienia. Czy możesz wyjaśnić swój sprzeciw? –
-1 Nie zgadzam się z "nie mogą być używane jako część indeksu do filtrowania". Można utworzyć indeks cvoering, dodać warunek w kolumnie w klauzuli INCLUDE, a indeks nadal będzie obejmował. Mój downwote nie jest anonimowy. –