T-SQL - Index

Indexessont des tables de recherche spéciales que le moteur de recherche de base de données peut utiliser pour accélérer la récupération des données. En termes simples, unindexest un pointeur vers des données dans une table. Un index dans une base de données est très similaire à un index à la fin d'un livre.

Par exemple, si vous souhaitez référencer toutes les pages d'un livre qui traitent d'un certain sujet, vous vous référez d'abord à l'index, qui répertorie toutes les rubriques par ordre alphabétique et sont ensuite référencées à un ou plusieurs numéros de page spécifiques.

Un index permet d'accélérer les requêtes SELECT et les clauses WHERE, mais il ralentit la saisie de données, avec les instructions UPDATE et INSERT. Les index peuvent être créés ou supprimés sans effet sur les données.

La création d'un index implique l'instruction CREATE INDEX, qui vous permet de nommer l'index, de spécifier la table et la ou les colonnes à indexer, et d'indiquer si l'index est dans l'ordre croissant ou décroissant.

Les index peuvent également être uniques, similaires à la contrainte UNIQUE, en ce que l'index empêche les entrées en double dans la colonne ou la combinaison de colonnes sur laquelle il y a un index.

Commande CREATE INDEX

Voici la syntaxe de base de CREATE INDEX.

Syntaxe

CREATE INDEX index_name ON table_name

Index à une seule colonne

Un index à une seule colonne est créé sur la base d'une seule colonne de table. Voici la syntaxe de base.

Syntaxe

CREATE INDEX index_name 
ON table_name (column_name)

Exemple

CREATE INDEX singlecolumnindex 
ON customers (ID)

Index uniques

Les index uniques sont utilisés non seulement pour les performances, mais également pour l'intégrité des données. Un index unique ne permet pas d'insérer des valeurs en double dans la table. Voici la syntaxe de base.

Syntaxe

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Exemple

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Index composites

Un index composite est un index sur deux ou plusieurs colonnes d'une table. Voici la syntaxe de base.

Syntaxe

CREATE INDEX index_name on table_name (column1, column2)

Exemple

CREATE INDEX compositeindex 
on customers (NAME, ID)

Que vous souhaitiez créer un index à une seule colonne ou un index composite, prenez en compte la ou les colonnes que vous pouvez utiliser très fréquemment dans la clause WHERE d'une requête comme conditions de filtre.

Si une seule colonne est utilisée, un index à une seule colonne doit être le choix. Si deux colonnes ou plus sont fréquemment utilisées dans la clause WHERE comme filtres, l'index composite serait le meilleur choix.

Index implicites

Les index implicites sont des index qui sont automatiquement créés par le serveur de base de données lors de la création d'un objet. Les index sont automatiquement créés pour les contraintes de clé primaire et les contraintes uniques.

Commande DROP INDEX

Un index peut être supprimé à l'aide de la commande MS SQL SERVER DROP. Des précautions doivent être prises lors de la suppression d'un index car les performances peuvent être ralenties ou améliorées.

Syntaxe

Voici la syntaxe de base.

DROP INDEX tablename.index_name

Quand éviter les index?

Bien que les index soient destinés à améliorer les performances des bases de données, il y a des moments où ils doivent être évités. Les directives suivantes indiquent quand l'utilisation d'un index doit être reconsidérée -

  • Les index ne doivent pas être utilisés sur de petites tables.

  • Les tables qui ont des opérations de mise à jour ou d'insertion par lots fréquentes et importantes ne doivent pas être indexées.

  • Les index ne doivent pas être utilisés sur des colonnes contenant un nombre élevé de valeurs NULL.

  • Les colonnes fréquemment manipulées ne doivent pas être indexées.