SQL - Index

Les index sont special lookup tablesque 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, un index est un pointeur vers des données dans une table. Un index dans une base de données est très similaire à un index au dos d'un livre.

Par exemple, si vous souhaitez référencer toutes les pages d'un livre qui traite 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 SELECT requêtes et WHERE clauses, mais cela ralentit la saisie des données, avec le UPDATE et le INSERTdéclarations. Les index peuvent être créés ou supprimés sans effet sur les données.

La création d'un index implique la 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 un ordre croissant ou décroissant.

Les index peuvent également être uniques, comme le UNIQUE contrainte, en ce que l'index empêche les entrées en double dans la colonne ou la combinaison de colonnes sur laquelle se trouve un index.

La commande CREATE INDEX

La syntaxe de base d'un CREATE INDEX est comme suit.

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. La syntaxe de base est la suivante.

CREATE INDEX index_name
ON table_name (column_name);

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. La syntaxe de base est la suivante.

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Index composites

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

CREATE INDEX index_name
on table_name (column1, column2);

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.

La commande DROP INDEX

Un index peut être supprimé à l'aide de SQL DROPcommander. Des précautions doivent être prises lors de la suppression d'un index car les performances peuvent ralentir ou s'améliorer.

La syntaxe de base est la suivante -

DROP INDEX index_name;

Vous pouvez consulter le chapitre sur les contraintes INDEX pour voir quelques exemples réels sur les index.

Quand faut-il éviter les index?

Bien que les index soient destinés à améliorer les performances d'une base 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.

  • Tables qui ont des mises à jour par lots fréquentes et importantes ou des opérations d'insertion.

  • 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.