Table des matières
1. Déclaration et utilisation de l'index
1.1 Classification des indices
2. Principes de conception des indices
2.1 Dans quelles circonstances est-il approprié de créer un index ?
2.2 Dans quelles circonstances n'est-il pas approprié de créer un index ?
1. Déclaration et utilisation de l'index
1.1 Classification des indices
Les index de MySQL comprennent des index ordinaires, des index uniques, des index de texte intégral, des index à une seule colonne, des index à plusieurs colonnes et des index spatiaux, etc.
Du point de vue de la logique fonctionnelle, il existe quatre principaux types d'index, à savoir les index ordinaires, les index uniques, les index de clé primaire et les index de texte intégral.
Selon l'implémentation physique, les index peuvent être divisés en deux types : les index clusterisés et les index non clusterisés.
Il est divisé en fonction du nombre de champs actifs et divisé en index à colonne unique et index conjoint.
1. Index ordinaire
2. Index unique
3. Index de clé primaire
4. Index à colonne unique
5. Index multi-colonnes (combiné, conjoint)
6. Index de texte intégral
7. Supplément : index spatial
Résumé : Différents moteurs de stockage prennent en charge différents types d'index
InnoDB : prend en charge les index B-tree, Full-text et autres, ne prend pas en charge l'index de hachage ;
MyISAM : prend en charge les index B-tree, Full-text et autres, mais ne prend pas en charge l'index Hash ;
Mémoire : prend en charge les index B-tree, Hash et autres, mais ne prend pas en charge l'index de texte intégral ;
NDB : prend en charge l'index de hachage, ne prend pas en charge les index B-tree, Full-text et autres ;
Archive : ne prend pas en charge les index B-tree, Hash, Full-text et autres ;
1.2 Créer un index
1. Créez un index lors de la création d'une table
CREATE TABLE table_name [col_name data_type]
[UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY] [index_name] (col_name [length]) [ASC |
DESC]
UNIQUE, FULLTEXT et SPATIAL sont des paramètres facultatifs, représentant respectivement l'index unique, l'index de texte intégral et l'index spatial ;
INDEX et KEY sont des synonymes et ont la même fonction, et sont utilisés pour spécifier la création d'un index ;
index_name spécifie le nom de l'index. index, qui est un paramètre facultatif. S'il n'est pas spécifié, MySQL utilise par défaut col_name comme nom d'index ;
col_name est la colonne de champ qui doit être créée et la colonne doit être sélectionnée parmi plusieurs colonnes définies dans la table de données ;
la longueur est un paramètre facultatif, indiquant la longueur de l'index, uniquement une chaîne. Seuls les champs de type peuvent spécifier la longueur de l'index ;
ASC ou DESC spécifie le stockage de la valeur d'index par ordre croissant ou décroissant.
1.3 Supprimer l'index
1. 使用ALTER TABLE删除索引 ALTER TABLE删除索引的基本语法格式如下:
ALTER TABLE table_name DROP INDEX index_name;
2. 使用DROP INDEX语句删除索引 DROP INDEX删除索引的基本语法格式如下:
DROP INDEX index_name ON table_name;
Lorsque vous supprimez une colonne d'une table, si la colonne supprimée fait partie d'un index, la colonne est également supprimée de l'index. Si
toutes les colonnes qui composent l'index sont supprimées, l'index entier sera supprimé.
2. Principes de conception des indices
2.1 Dans quelles circonstances est-il approprié de créer un index ?
1. Les valeurs des champs ont des restrictions d'unicité.
Les champs ayant des caractéristiques uniques dans l'entreprise, même s'il s'agit de champs combinés, doivent être intégrés dans un index unique. (Source : Alibaba)
Remarque : Ne pensez pas que l'index unique affecte la vitesse d'insertion. Cette perte de vitesse peut être ignorée, mais l'amélioration de la vitesse de recherche est évidente.
2. Champs fréquemment utilisés comme conditions de requête WHERE.
Si un champ est souvent utilisé dans la condition WHERE d'une instruction SELECT, vous devez créer un index pour ce champ. Surtout lorsque la quantité de données est importante, la création d'un index commun peut considérablement améliorer l'efficacité de l'interrogation des données.
3. Souvent, les index de colonnes de GROUP BY et ORDER BY
permettent aux données d'être stockées ou récupérées dans un certain ordre. Par conséquent, lorsque nous utilisons GROUP BY pour regrouper les données, ou que nous utilisons ORDER BY pour trier les données, nous devons regrouper les données. Ou le champ trié est indexé. S'il y a plusieurs colonnes à trier, un index combiné peut être construit sur ces colonnes.
4. Colonnes de condition WHERE
pour UPDATE et DELETE. Après avoir interrogé les données selon une certaine condition, effectuez les opérations UPDATE ou DELETE. Si un index est créé sur le champ WHERE, l'efficacité peut être grandement améliorée. Le principe est que nous devons d'abord récupérer cet enregistrement en fonction de la colonne de condition WHERE, puis le mettre à jour ou le supprimer. Si les champs mis à jour sont des champs non-index lors de la mise à jour, l'amélioration de l'efficacité sera plus évidente, car la mise à jour des champs non-index ne nécessite pas de maintenance de l'index.
5. Le champ DISTINCT doit créer un index.
Parfois, nous devons dédupliquer un certain champ. En utilisant DISTINCT, la création d'un index pour ce champ améliorera également l'efficacité des requêtes.
L'index triera les données dans un certain ordre, la déduplication sera donc beaucoup plus rapide.
6. Lors de la création d'une opération de connexion JOIN multi-tables, points à noter lors de la création d'un index :
Tout d'abord, essayez de ne pas dépasser 3 tables de jointure, car chaque table supplémentaire équivaut à l'ajout d'une boucle imbriquée, et l'ordre de grandeur de croissance sera très rapide, ce qui affecte sérieusement l'efficacité des requêtes.
Deuxièmement, créez un index sur la condition WHERE, car WHERE est le filtre pour les conditions de données. Si la quantité de données est très importante, le filtrage sans conditions WHERE est très effrayant.
Enfin, créez un index sur le champ utilisé pour la jointure, et le champ doit être du même type dans plusieurs tables.
7. Créez un index en utilisant le plus petit type de colonne
8. Créez un index en utilisant un préfixe de chaîne
9. Les colonnes à haute discrimination (haute hachage) conviennent comme index.
10. Les colonnes les plus fréquemment utilisées sont placées sur le côté gauche de l'index commun
. De cette façon, moins d'index peuvent être créés. Dans le même temps, grâce au « principe du préfixe le plus à gauche », l’utilisation des index conjoints peut être augmentée.
11. Lorsque plusieurs champs doivent être indexés, un index conjoint est préférable à un index à valeur unique.
2.2 Dans quelles circonstances n'est-il pas approprié de créer un index ?
1. Ne définissez pas d'index pour les champs qui ne sont pas utilisés dans Where
2. Il est préférable de ne pas utiliser d'index pour les tables contenant de petits volumes de données.
3. Ne créez pas d'index sur des colonnes contenant une grande quantité de données en double
4. Évitez de créer trop d'index sur des tables fréquemment mises à jour
5. Il n'est pas recommandé d'utiliser des valeurs non ordonnées comme index
6. Supprimer les index qui ne sont plus utilisés ou rarement utilisés
7. Ne définissez pas d'index redondants ou en double