1238 votes

Que signifient réellement les termes "Clustered" et "Non-Clustered" ?

J'ai une exposition limitée à la DB et je ne l'ai utilisée qu'en tant que programmeur d'applications. Je souhaite connaître Clustered y Non clustered indexes . J'ai fait une recherche sur Google et j'ai trouvé ce qui suit :

Un index clusterisé est un type spécial d'index qui réordonne la façon dont les les enregistrements de la table sont physiquement physiquement. Par conséquent, une table ne peut avoir qu'un seul un seul index clusterisé. Les nœuds feuilles d'un index clusterisé contiennent les pages données. Un index non clusterisé est un type spécial d'index dans lequel l'ordre l'ordre logique de l'index ne correspond pas correspond pas à l'ordre physique de stockage des des rangées sur le disque. Le noeud feuille d'un non clusterisé n'est pas composé les pages de données. Au lieu de cela, les nœuds leaf contiennent des lignes d'index.

Ce que j'ai trouvé dans SO était Quelles sont les différences entre un index clusterisé et un index non clusterisé ? .

Quelqu'un peut-il expliquer cela en langage clair ?

2 votes

3voto

Abhishek Duppati Points 554

Index en grappe : La contrainte de la clé primaire crée automatiquement un index clusterisé si aucun index clusterisé n'existe déjà sur la table. Les données réelles de l'index clusterisé peuvent être stockées au niveau des feuilles de l'index.

Index non clusterisé : Les données réelles de l'index non clusterisé ne sont pas directement trouvées au niveau du nœud feuille, mais il faut passer par une étape supplémentaire pour les trouver, car seules les valeurs des localisateurs de ligne pointent vers les données réelles. L'index non clusterisé ne peut pas être trié comme un index clusterisé. Il peut y avoir plusieurs index non clusterisés par table, en fait cela dépend de la version du serveur SQL que nous utilisons. En fait, cela dépend de la version du serveur SQL que nous utilisons. Sql Server 2005 permet 249 index non clusterisés et pour les versions supérieures comme 2008, 2016, il permet 999 index non clusterisés par table.

2voto

Index en grappe - Un index en cluster définit l'ordre dans lequel les données sont physiquement stockées dans une table. Les données d'une table ne peuvent être triées que d'une seule manière, il ne peut donc y avoir qu'un seul index clusterisé par table. Dans SQL Server, la contrainte de clé primaire crée automatiquement un index clusterisé sur cette colonne particulière.

Index non clusterisé - Un index non groupé ne trie pas les données physiques de la table. En fait, un index non clusterisé est stocké à un endroit et les données de la table sont stockées à un autre endroit. C'est similaire à un manuel scolaire où le contenu du livre se trouve à un endroit et l'index à un autre. Il est important de mentionner ici qu'à l'intérieur de la table, les données seront triées par un index clusterisé. Cependant, dans l'index non clusterisé, les données sont stockées dans l'ordre spécifié. L'index contient les valeurs des colonnes sur lesquelles l'index est créé et l'adresse de l'enregistrement auquel la valeur de la colonne appartient. Lorsqu'une requête est lancée sur une colonne sur laquelle l'index est créé, la base de données va d'abord aller dans l'index et chercher l'adresse de la ligne correspondante dans la table. Elle se rendra ensuite à l'adresse de cette ligne et récupérera les valeurs des autres colonnes. C'est en raison de cette étape supplémentaire que les index non groupés sont plus lents que les index groupés.

Différences entre les index clusterisés et non clusterisés

  1. Il ne peut y avoir qu'un seul index clusterisé par table. Cependant, vous pouvez créer plusieurs index non groupés sur une seule table.
  2. Les index en grappe ne trient que les tables. Par conséquent, ils ne consomment pas stockage supplémentaire. Les index non groupés sont stockés dans un endroit séparé de la table réelle, ce qui demande plus d'espace de stockage.
  3. Les index clusterisés sont plus rapides que les index non clusterisés puisqu'ils n'impliquent pas d'étape de recherche supplémentaire.

Pour plus d'informations, voir este article.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X