Index SQLite
Index est une table de recherche spéciale utilisée par les moteurs de recherche de bases de données pour accélérer la récupération des données. En termes simples, un index est un pointeur vers les données du tableau. Un index dans une base de données est très similaire à un index derrière un livre.
Par exemple, si vous souhaitez citer toutes les pages d'un livre qui traite d'un certain sujet, vous devez d'abord pointer vers l'index, qui répertorie tous les sujets par ordre alphabétique, puis pointer vers un ou plusieurs sujets spécifiques. numéros de pages.
Un index permet d'accélérer les requêtes SELECT et les clauses WHERE, mais il ralentit la saisie des données lors de l'utilisation des instructions UPDATE et INSERT. Les index peuvent être créés ou supprimés sans affecter les données.
Créez un index à l'aide de l'instruction CREATE INDEX, qui permet de nommer l'index, de spécifier la table et la ou les colonnes à indexer, et d'indiquer si l'index est par ordre croissant ou décroissant.
Les indices peuvent également être uniques, similaires aux contraintes UNIQUE, empêchant les entrées en double sur une colonne ou une combinaison de colonnes.
Commande CREATE INDEX
La syntaxe de base de CREATE INDEX est la suivante :
Index à colonne unique
Un index à colonne unique est un index créé sur la base d'une seule colonne de la table. La syntaxe de base est la suivante :
ON table_name (column_name);
Unique Index
L'utilisation d'un index unique est non seulement pour les performances, mais aussi pour l'intégrité des données. Un index unique ne permet pas d'insérer des valeurs en double dans le tableau. La syntaxe de base est la suivante :
on table_name (column_name);
Index combiné
L'index combiné est basé sur une table Un index créé sur deux colonnes ou plus. La syntaxe de base est la suivante :
on table_name (column1, column2);
Que vous souhaitiez créer un index à une seule colonne ou un index combiné, vous devez considérer les colonnes qui sont utilisées très fréquemment dans la clause WHERE comme filtres de requête.
Si la valeur utilise une colonne, choisissez d'utiliser un index à une seule colonne. Choisissez d'utiliser un index composite si deux colonnes ou plus sont fréquemment utilisées dans la clause WHERE comme filtre.
Index implicite
L'index implicite est un index créé automatiquement par le serveur de base de données lors de la création d'un objet. Les index sont automatiquement créés avec des contraintes de clé primaire et des contraintes uniques.
Exemple
Ce qui suit est un exemple où nous allons créer un index sur la colonne salaire de la table COMPANY :
Maintenant, utilisons la commande .indices pour lister tous les index disponibles sur la table COMPANY comme suit :
Cela produira le résultat suivant, où sqlite_autoindex_COMPANY_1 est l'index implicite créé lors de la création de la table.
sqlite_autoindex_COMPANY_1
Vous pouvez lister tous les index au niveau de la base de données comme ceci :
Commande DROP INDEX
Un index peut être supprimé à l'aide de la commande DROP de SQLite. Des précautions particulières doivent être prises lors de la suppression d'index, car les performances peuvent se dégrader ou s'améliorer.
La syntaxe de base est la suivante :
Vous pouvez utiliser l'instruction suivante pour supprimer un index précédemment créé :
Dans quelles circonstances devriez-vous éviter d'utiliser des index ?
Bien que le but des index soit d'améliorer les performances de la base de données, il existe plusieurs situations dans lesquelles vous devez éviter d'utiliser des index. Lors de l'utilisation d'index, les directives suivantes doivent être reconsidérées :
Les index ne doivent pas être utilisés sur des tables plus petites.
Les indices ne doivent pas être utilisés sur des tables avec des opérations fréquentes de mise à jour ou d'insertion par lots importants.
Les indices ne doivent pas être utilisés sur des colonnes contenant un grand nombre de valeurs NULL.
Les indices ne doivent pas être utilisés sur des colonnes fréquemment utilisées.