Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

Un index aide SQL Server à récupérer rapidement les données des lignes. Les index fonctionnent comme la table des matières au début des livres, vous permettant de rechercher rapidement la page sur laquelle se trouve un sujet. Sans index, SQL Server doit analyser toutes les lignes d'une table pour trouver un enregistrement.

Il existe deux types d'index dans SQL Server: cluster et non cluster. Découvrez la différence entre les index clusterisés et non clusterisés et pourquoi ils sont importants.

Index clusterisé dans SQL Server

Dans un index clusterisé, les lignes de données sont stockées physiquement de manière ordonnée en fonction de la valeur de la clé. Étant donné que l'index inclut la table et qu'il ne peut organiser les lignes que dans un seul ordre, vous ne pouvez créer qu'un seul index clusterisé par table.

instagram viewer

Alors que les index accélèrent la récupération des lignes d'une plage, Instructions INSERT et UPDATE peut être lent car l'optimiseur de requête analyse l'index dans l'ordre jusqu'à ce qu'il trouve l'index cible.

Index non clusterisé dans SQL Server

Un index non clusterisé contient les valeurs de clé dont l'entrée est un pointeur appelé localisateur de ligne. Pour les tables clusterisées (tables avec un index clusterisé), le pointeur pointe vers une clé dans l'index clusterisé qui à son tour pointe vers la ligne de la table. Pour les lignes sans index clusterisé, le pointeur pointe directement sur la ligne de la table.

Comment créer un index clusterisé dans SQL Server

Lorsque vous créez une table avec une clé primaire, SQL Server crée automatiquement une clé d'index cluster basée sur cette clé primaire. Si vous n'avez pas de clé primaire, vous pouvez exécuter l'instruction suivante pour créer une clé d'index cluster.

CRÉER EN GROUPE INDICE <indicenom>
SUR LA TABLE <nom de la table>(nom de colonne)

Dans cette instruction, vous spécifiez le nom de l'index, le nom de la table où le créer et le nom de la colonne à utiliser dans l'index.

Si vous ajoutez une clé primaire à une table qui possède déjà un index clusterisé, SQL Server créera un index non clusterisé avec celle-ci.

Pour créer un index clusterisé qui n'inclut pas la colonne de clé primaire, vous devez d'abord supprimer la contrainte de clé primaire.

UTILISERnom de la base de données
MODIFIERTABLEAU nom de la table
GOUTTECONTRAINTE pk_name
ALLER

La suppression des contraintes de clé primaire supprime également l'index clusterisé, ce qui vous permet d'en créer un personnalisé.

Comment créer un index non clusterisé dans SQL Server

Pour créer un index non clusterisé, utilisez l'instruction suivante.

CRÉERINDICE <indicenom>
SUR LA TABLE <nom de la table>(nom de colonne)

Vous pouvez également utiliser le mot-clé NONCLUSTERED comme ceci :

CRÉER [NON CLUSTÉRÉ] INDICE <indicenom>
SUR LA TABLE <nom de la table>(nom de colonne)

Cette instruction crée un index non clusterisé dans la table que vous spécifiez et inclut la colonne que vous indiquez.

Si vous le souhaitez, vous pouvez trier les colonnes par ordre croissant (ASC) ou décroissant (DESC).

CRÉER [NON CLUSTÉRÉ] INDICE <indicenom>
SUR LA TABLE <nom de la table>(nom_colonne ASC/DESC)

Quel index choisir ?

Les index clusterisés et non clusterisés améliorent le temps d'interrogation. Si la plupart de vos requêtes sont des opérations SELECT sur plusieurs colonnes de la table, les index clusterisés sont plus rapides. Cependant, pour les opérations INSERT ou UPDATE, les index non clusterisés sont plus rapides car l'optimiseur de requête peut localiser la colonne directement à partir de l'index.

Comme vous pouvez le voir, ces index fonctionnent mieux pour différentes requêtes SQL. La plupart des bases de données SQL bénéficieront donc d'avoir au moins un index clusterisé et des index non clusterisés pour les colonnes régulièrement mises à jour.

L'importance des index dans SQL Server

Les index clusterisés et non clusterisés améliorent les performances des requêtes. Lorsque vous exécutez une requête, l'optimiseur de requête analyse l'index pour rechercher l'emplacement de stockage d'une ligne, puis récupère les informations à partir de cet emplacement. C'est beaucoup plus rapide que de parcourir toutes les lignes du tableau.

Vous pouvez également utiliser des index non clusterisés pour résoudre les blocages de recherche de signet en créant un index non clusterisé pour les colonnes auxquelles les requêtes impliquaient l'accès.