English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Index SQLite

Un index est une table de recherche spéciale que le moteur de recherche de la base de données peut utiliser pour accélérer la recherche de données. En résumé, unindexUn index est un pointeur vers les données de la table. Les index dans une base de données sont très similaires à ceux à la fin d'un livre.

Par exemple, si vous devez référencer toutes les pages d'un livre qui discutent d'un sujet donné, vous devez d'abord consulter l'index, qui liste par ordre alphabétique tous les sujets, puis référencer une ou plusieurs pages spécifiques.

Les index aident à accélérer les requêtes SELECT et les clauses WHERE, mais ils ralentissent la vitesse d'insertion des données via les instructions UPDATE et INSERT. Vous pouvez créer ou supprimer des index sans affecter les données.

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

Les index peuvent également être uniques, de la même manière que la contrainte UNIQUE, car ils peuvent empêcher l'existence d'entrées répétées dans les colonnes ou combinaisons de colonnes indexées.

Commande CREATE INDEX

Voici la syntaxe de baseCREATE INDEX.

CREATE INDEX index_name ON table_name;

.

Un index sur une seule colonne est un index créé uniquement sur une colonne de la table. La syntaxe de base est la suivante-

CREATE INDEX index_name ON table_name (column_name);

Index unique

Un index unique n'est pas seulement utilisé pour améliorer les performances, mais aussi pour la intégrité des données. Un index unique n'autorise pas l'insertion de valeurs répétées dans la table. La syntaxe de base est la suivante-

CREATE UNIQUE INDEX index_name ON table_name (column_name);

Index composé

Un index composé est un index sur deux ou plusieurs colonnes d'une table. La syntaxe de base est la suivante-

CREATE INDEX index_name ON table_name (column1, colonne2);

Que ce soit pour créer un index sur une seule colonne ou un index composé, il faut considérer la colonne(s) que vous pourriez utiliser très fréquemment comme condition de filtrage dans la clause WHERE de la requête.

Si vous utilisez une seule colonne, il est préférable de choisir un index sur une seule colonne. Si deux ou plusieurs colonnes sont souvent utilisées comme filtres dans la clause WHERE, un index composé sera le meilleur choix.

Index implicite

Un index implicite est un index créé automatiquement par le serveur de base de données lors de la création de l'objet. Les indices sont automatiquement créés pour les contraintes de clé principale et uniques.

Exemple

Voici un exemple, nous allons créer un index pour la colonne salaire dans la table COMPANY-

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Maintenant, utilisons ce qui suit.indicesLa commande liste tous les indices disponibles dans la table COMPANY :

sqlite> .indices COMPANY

Cela produira les résultats suivants, oùsqlite_autoindex_COMPANY_1C'est un index implicite,LeL'index est créé lors de la création de la table elle-même.

salary_indexsqlite_autoindex_COMPANY_1

Vous pouvez lister toutes les portées des bases de données d'indices, comme suit :

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

Commande DROP INDEX

Vous pouvez utiliser SQLite DROPSupprimez l'index. Soyez prudent lors de la suppression de l'index, car la performance peut ralentir ou s'améliorer.

Voici la syntaxe de base :-

DROP INDEX index_name;

Vous pouvez utiliser les instructions suivantes pour supprimer les indices créés précédemment.

sqlite> DROP INDEX salary_index;

Quand éviter les index?

Bien que les index soient conçus pour améliorer les performances de la base de données, ils devraient parfois être évités. Les règles suivantes indiquent quand il convient de réexaminer l'utilisation des index.

L'index ne doit pas être utilisé-

  • Petites tables.

  • Tables soumises à des opérations de mise à jour ou d'insertion en batch fréquentes et massives.

  • Colonnes contenant de nombreuses valeurs NULL.

  • Colonnes fréquemment manipulées.