Création d’un index simple sur SQL Server
- MYPE SAS
- 10 févr.
- 3 min de lecture
Dernière mise à jour : 24 juil.
Un index simple est un type d'index qui est basé sur une seule colonne. Il permet d’accélérer les recherches et les tris sur cette colonne.
Il possède plusieurs caractéristiques :
Nombre de colonnes : Il est créé sur une seule colonne de la table.
Unicité : Peut-être unique pour garantir qu'aucune valeur dupliquée n'existe dans la colonne. Sinon, il permet des valeurs dupliquées.
Type : Il peut être soit clusterisé soit non-clusterisé.
Clusterisé : Trie les données physiquement.
Non clusterisé : Ne modifie pas l'ordre physique des données.
Création d’un index simple non-clusterisé :
La création d'un index simple non-clusterisé en SQL Server consiste à définir un index sur une seule colonne d'une table, sans modifier l'ordre physique des données dans cette table. Il est créé dans les fichiers de la base de données et séparé de la table elle-même. C’est une structure qui indexe les valeurs de la colonne et un pointeur vers les lignes de données dans la table.
Il est pratique lorsque vous effectuez fréquemment des recherches ou des tris sur une seule colonne. C’est un moyen simple d’avoir des requêtes plus rapides et performantes.
L'index occupe de l'espace supplémentaire car il contient une copie triée de la colonne indexée ainsi que les pointeurs vers les données. Lorsqu'une ligne est insérée, mise à jour ou supprimée, l'index doit être mis à jour également, ce qui peut prendre du temps.
Syntaxe :
CREATE NONCLUSTERED INDEX idx_nom ON ‘table’(‘colonne’);
Exemple de requête dont la performance va être améliorée :
SELECT * FROM table WHERE colonne = 'valeur';
Création d'un index simple unique non-clusterisé :
Pour s’assurer qu'aucune valeur dupliquée n'existe dans une colonne, il est possible de créer un index unique non-clusterisé. Ce type d’index équivaut à l’index simple non-clusterisé mais assure l’impossibilité d’insérer une donnée en doublon. Il y a un objectif d’unicité dans la colonne spécifiée. L’index va empêcher la création de doublons dans la colonne.
Si lors de la création de la table la colonne a subi une clause UNIQUE alors un index simple non clusterisé a déjà été créé automatiquement par SQL Server.
Syntaxe :
CREATE UNIQUE NONCLUSTERED INDEX idx_colonne_unique ON table(colonne);
Si lors de la création de la table la clause UNIQUE a été utilisée sur une colonne (ou un ensemble de colonnes), cela garantit que les valeurs de la colonne seront uniques dès le moment où la table est créée.
Exemple :
CREATE TABLE article (
id_article INT PRIMARY KEY IDENTITY(0, 1),
nom_article VARCHAR(255) UNIQUE,
code_article Nom VARCHAR(255)
);
Dans cet exemple, la contrainte UNIQUE sur la colonne Email garantit que les valeurs seront uniques et, en coulisse, SQL Server créera un index unique non clusterisé sur cette colonne.
Créer l’index permet un contrôle total du paramétrage sur la création de l’index (nom et options spécifiques). Utiliser la contrainte UNIQUE donne moins de contrôle sur la création de l’index mais n’empêche pas d’y accéder pour modification.
Création d'un index simple clusterisé :
La création d'un index simple clusterisé en SQL Server organise physiquement les données de la table en fonction de l'ordre des valeurs dans la colonne indexée. Un index clusterisé modifie l'ordre des lignes dans la table. Une table ne peut avoir qu'un seul index clusterisé car toutes les données de la table seront organisées selon les valeurs de la colonne qui subit l’index.
Par défaut, SQL Server crée un index clusterisé sur la clé primaire de la table, car la clé primaire nécessite l'unicité des valeurs. L'index clusterisé créé automatiquement sur une clé primaire est toujours unique.
C’est pour ces raisons que lors d’un SELECT, les données s’affichent dans l’ordre de la clé primaire.
Une fois qu'une table a un index clusterisé (par exemple, créé automatiquement par une clé primaire), vous ne pouvez pas créer un autre index clusterisé sur la même table. L'index clusterisé est principalement utilisé pour organiser physiquement les données dans la table.
On peut privilégier un index clusterisé si, dans une table sans clé primaire (très rare), vous effectuez fréquemment des recherches sur des plages de données (par exemple, BETWEEN, >, <).
Syntaxe :
CREATE CLUSTERED INDEX nom_index ON table (colonne);
Création d'un index simple unique clusterisé :
Suivant les explications sur la création de l’index simple clusterisé, l’index simple unique clusterisé est créé automatiquement par SQL Server sur la clé primaire de la table lors de sa création. Une table ne peut avoir qu’un seul index clusterisé.
Pour terminer SQL Server crée par défaut un index non clusteré non unique sauf si une spécification est donnée dans la requête.
Exemple de création par défaut :
CREATE INDEX idx_colonne ON table(colonne);



Commentaires