index cluster lui-même est la table réelle ...
Si vous créez une table directement sans index clusterisé, il s'appelle un tas - ce qui est juste un ensemble de pages non organisé (non ordonné). Chaque page pointe vers la page précédente et la page suivante (liste doublement chaînée).
Maintenant, imaginez que vous créez un index ordonné en clusters pour cette table:
Toutes les pages sont maintenant stockées dans un ordre de la clé spécifiée pour le cluster -> ce sont des pages de niveau de feuilles et contiennent des données réelles dans chaque ligne. Ceux-ci utilisent toujours la liste doublement chaînée. En outre, la structure d'index clusterisée impliquera des pages supplémentaires dans les niveaux supérieurs (pouvant être de plusieurs niveaux) afin qu'ils forment un arbre équilibré -> ce sont des pages de branches et des pages racines. Les données provenant uniquement de la clé en cluster sont utilisées comme pointeurs vers les pages des niveaux inférieurs.
Cette formation est telle que le moteur SQL peut localiser une page nécessaire pour trouver facilement les données (opération appelée SEEK), par ex. Lorsque vous exécutez une requête qui utilise un prédicat correspondant à la clé de cluster, il est capable de localiser efficacement les données exactes.
Si la clé ne correspond pas ou si SQL sait que la table est suffisamment petite (ou même lorsqu'elle sait qu'elle retourne presque toutes les données de la table), elle n'a pas besoin d'utiliser les pages de niveau supérieur. Il peut décider d'aller directement aux pages de niveau feuille pour analyser toutes les lignes et trouver les enregistrements correspondants. Souvenez-vous des doubles listes liées pour pointer vers la page précédente et suivante. Bonus: il peut y avoir un index scan même si vous spécifiez une clause WHERE car il ne peut pas utiliser la recherche ou SQL pense qu'il est plus efficace de scanner que la recherche. Faites-moi savoir si cela aide.