Les colonnes d'inclusion ne peuvent être utilisées que pour fournir des colonnes à la base de données SELECT
de la requête. Ils ne peuvent pas être utilisés comme partie de l'index pour le filtrage.
EDIT : Pour clarifier davantage mon propos, prenons l'exemple suivant :
Je crée un tableau simple et je le remplis :
create table MyTest (
ID int,
Name char(10)
)
insert into MyTest
(ID, Name)
select 1, 'Joe' union all
select 2, 'Alex'
Considérons maintenant ces 3 index et leurs plans d'exécution correspondants pour un simple SELECT.
select ID, Name
from MyTest
where Name = 'Joe'
Cas 1 : Un index sur l'ID uniquement donne lieu à un SCAN DE TABLE.
create index idx_MyTest on MyTest(ID)
Cas 2 : Un index sur l'ID, y compris le nom. C'est un peu mieux parce que l'index couvre la requête, mais j'obtiens toujours une opération SCAN.
create index idx_MyTest on MyTest(ID) include (Name)
Cas 3 : Un index sur les noms, y compris les identifiants. C'est le meilleur. L'index est construit sur la colonne de ma clause WHERE, j'obtiens donc une opération SEEK, et l'index couvre la requête grâce à la colonne incluse.
create index idx_MyTest on MyTest(Name) include (ID)