On parle d’un index couvrant lorsqu’il couvre les besoins de la requête.

Souvent, lorsque SQL Server doit bâtir un plan d’exécution, il va effectuer une recherche dans un index, et ensuite, en boucle, aller chercher les informations nécessaires dans la table, autant de fois qu’il y a de références de lignes trouvées.

Cette recherche en boucle s’appelle un bookmark lookup, une recherche dans la table. Mais si on ne recherche que des colonnes qui sont présentes dans l’index, il sera inutile d’effectuer un bookmark lookup, et SQL Server pourra mieux optimiser la requête.

Donc, que faire pour améliorer les choses ? ajouter les colonnes affichées dans l’index, ce qui s’appelle de la couverture. On ajoute des colonnes qu’on trouve dans le SELECT, pour couvrir les besoins de la requête. Il y a une partie de la définition de l’index qui permet d’ajouter les informations qu’on veut avoir dans le SELECT, seulement au dernier niveau de l’index. C’est la partie INCLUDE du CREATE INDEX.

Utiliser un index couvrant pour optimiser les performances