Applications d'indexation MySQL 5

Introduction

Dans cet article, nous découvrirons 5 types différents d'index dans MySQL et leurs scénarios d'application, ainsi que leurs avantages et inconvénients.

1. Index clusterisé

Un index clusterisé est un moyen de stocker physiquement des lignes de données dans une table de base de données. Sa caractéristique est de stocker les données dans l'ordre de l'index, et l'index clusterisé est également un index de clé primaire.

-- 创建聚集索引的示例
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

Scénarios d'application :

  • Il est souvent nécessaire d'interroger les données dans un ordre spécifique, par exemple en les triant par ID utilisateur.
  • Situations où vous devez trouver rapidement la valeur minimale ou maximale.

Avantages et inconvénients:

  • Avantages : améliore les performances des requêtes car les données sont stockées physiquement à proximité.
  • Inconvénients : chaque fois que des données sont insérées, supprimées ou mises à jour, l'ordre de l'index clusterisé doit être conservé, ce qui peut entraîner une dégradation des performances.

2. Indice unique

Un index unique est un index qui garantit des valeurs uniques dans une colonne.

-- 创建唯一索引的示例
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(50) UNIQUE
);

Scénarios d'application :

  • Lorsqu'il est nécessaire de s'assurer que la valeur d'une certaine colonne est unique dans le tableau, comme l'adresse e-mail.
  • Lorsque vous avez besoin de trouver rapidement une valeur spécifique.

Avantages et inconvénients:

  • Avantages : Garantissez l’unicité des données et évitez les valeurs en double.
  • Inconvénients : lors de l'insertion, de la suppression ou de la mise à jour de données, des opérations supplémentaires sont nécessaires pour conserver l'unicité, ce qui peut affecter les performances.

3. Comparaison entre l'index clusterisé et l'index unique

Les index clusterisés et les index uniques sont deux types d'index différents dans MySQL, et ils diffèrent par leurs fonctions et leurs scénarios d'utilisation. Voici les informations de comparaison entre l'index clusterisé et l'index unique :

  • définition

    • Index clusterisé : un index clusterisé est un moyen de stocker physiquement des lignes de données dans l'ordre d'un index, généralement également un index de clé primaire.
    • Index unique : Un index unique est un index qui garantit que les valeurs d'une colonne sont uniques.
  • Unicité des données

    • Index clusterisé : un index clusterisé peut être unique ou non unique, en fonction de la clé primaire ou de la contrainte d'unicité.
    • Index unique : un index unique nécessite que les valeurs de la colonne soient uniques et que les valeurs en double ne soient pas autorisées.
  • Structure de l'indice

    • Index clusterisé : un index clusterisé stocke les lignes de données sur le disque dans l'ordre d'index. Une table ne peut avoir qu'un seul index clusterisé, généralement défini par la clé primaire.
    • Index unique : un index unique utilise des structures telles que B-tree ou un index de hachage pour accélérer les recherches et ne modifie pas l'ordre physique des lignes de données sur le disque. Une table peut avoir plusieurs index uniques.
  • Performances des requêtes

    • Index clusterisé : l'index clusterisé offre des performances plus élevées lorsqu'il est interrogé dans l'ordre de l'index, car les lignes de données sont stockées physiquement adjacentes les unes aux autres. Cependant, la nécessité de conserver l'ordre de l'index clusterisé lors de l'insertion, de la suppression ou de la mise à jour de données peut entraîner une dégradation des performances.
    • Index unique : un index unique peut accélérer la recherche de colonnes avec des valeurs uniques et offrir de meilleures performances de requête. L'insertion, la suppression ou la mise à jour de données nécessitent des opérations supplémentaires pour conserver l'unicité, ce qui peut avoir un impact sur les performances.
  • Scène applicable

    • Index clusterisé : convient aux situations dans lesquelles les données sont fréquemment interrogées dans un ordre spécifique ou dans lesquelles la valeur minimale ou maximale doit être trouvée rapidement.
    • Index unique : convient aux situations où vous devez garantir l'unicité d'une colonne et trouver rapidement une valeur spécifique.

4. Index non unique (ordinaire)

Un index non unique est un index qui permet des valeurs en double dans une colonne.

-- 创建非唯一索引的示例
CREATE TABLE books (
    id INT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(50),
    year INT,
    INDEX idx_author (author)
);

Scénarios d'application :

  1. Requête multi-colonnes : lorsque les conditions de requête impliquent plusieurs colonnes, l'utilisation d'index combinés peut réduire le nombre d'index et améliorer l'efficacité des requêtes.
  2. Index de couverture : si l'index combiné contient toutes les colonnes requises par la requête, la requête peut utiliser directement l'index, évitant ainsi les opérations de retour de table et améliorant les performances.
  3. Requêtes de tri et de regroupement : si la requête contient des opérations de tri ou de regroupement, vous pouvez envisager d'ajouter les colonnes de tri ou de regroupement à l'index combiné pour réduire le coût des opérations de tri et de regroupement.

Avantages et inconvénients :
Avantages :

  1. Réduire le nombre d'index : les index composites peuvent réduire le nombre d'index en incluant plusieurs colonnes dans le même index, réduisant ainsi l'espace de stockage occupé.
  2. Améliorer les performances des requêtes : les index combinés peuvent mieux répondre aux exigences de requêtes spécifiques, réduire le nombre d'opérations d'E/S et d'analyses d'index et augmenter la vitesse des requêtes.
  3. Index de couverture : l'index combiné contient toutes les colonnes requises pour la requête. Les données peuvent être obtenues directement à partir de l'index, évitant ainsi les opérations de retour de table et améliorant les performances de la requête.

défaut:

  1. Coût de maintenance de l'index : un index composite doit conserver les valeurs et l'ordre de plusieurs colonnes. Lorsque les données sont insérées, mises à jour ou supprimées, le coût de maintenance de l'index augmentera.
  2. Index redondants : l'ordre des colonnes incluses dans un index composite est important, et différents ordres de colonnes peuvent avoir des impacts différents sur les performances selon les requêtes. Par conséquent, si l’ordre des colonnes de l’index composite ne correspond pas exactement aux exigences de la requête, une redondance de l’index peut en résulter.

5. Index du texte intégral

L'indexation en texte intégral est une méthode d'indexation utilisée pour la recherche en texte intégral du contenu textuel.

-- 创建全文索引的示例
CREATE TABLE articles (
    id INT PRIMARY KEY,
    title VARCHAR(100),
    content TEXT,
    FULLTEXT INDEX idx_content (content)
);

Scénarios d'application :

  • Lorsqu’une recherche par mot-clé doit être effectuée sur une grande section de texte, comme une recherche par mot-clé pour des articles d’actualité.
  • Situations où les résultats doivent être triés en fonction de la pertinence du contenu du texte.

Avantages et inconvénients:

  • Avantages : Fournit une fonction de recherche en texte intégral efficace.
  • Inconvénients : les index de texte intégral occupent plus d’espace de stockage.

6. Indice combiné

Un index composite est un index basé sur plusieurs colonnes, qui peut améliorer l'efficacité des requêtes grâce à la combinaison de plusieurs colonnes.

--单独创建
CREATE INDEX index_name ON table_name (column1, column2, ...);

Scénarios d'application :

  • Lorsque vous avez besoin de trouver rapidement une certaine valeur, par exemple en recherchant des informations sur un produit par nom de produit.
  • Les index de hachage conviennent aux requêtes d'égalité, mais pas aux requêtes de plage.

Avantages et inconvénients:

  • Avantages : Il possède des caractéristiques de recherche rapides et convient aux requêtes équivalentes.
  • Inconvénients : les requêtes par plage ne sont pas prises en charge et les index de hachage nécessitent un espace de stockage élevé.

7. Vérification de l'index

Pour vérifier que ces index sont en vigueur, vous pouvez utiliser EXPLAINdes commandes pour analyser le plan d'exécution de l'instruction de requête. EXPLAINLa commande fournit des informations sur la manière dont MySQL exécute la requête, notamment les index utilisés, l'ordre dans lequel les tables sont lues, etc.

Voici les étapes générales pour vérifier que l'index est valide :

  1. Ouvrez le client MySQL et connectez-vous à votre base de données.
  2. Écrivez une instruction de requête, par exemple :
    EXPLAIN SELECT * FROM table_name WHERE column_name = 'value';
    
    Remplacez table_namepar le nom de la table que vous souhaitez interroger, column_namepar le nom de la colonne sur laquelle vous souhaitez utiliser l'index valueet par la valeur spécifique que vous souhaitez interroger.
  3. Exécutez EXPLAINla commande et affichez les résultats.
  4. Examinez EXPLAINle résultat en accordant une attention particulière aux champs suivants :
    • type: Indique le type d'accès de la requête, comme constl'utilisation d'un index unique, refl'utilisation d'un index non unique, fulltextl'utilisation d'un index de texte intégral, etc.
    • key: affiche le nom d'index réel utilisé.
    • rows: Indique que MySQL estime le nombre de lignes à analyser.
    • Extra: Contient d'autres informations supplémentaires sur l'exécution des requêtes, telles que l'utilisation ou non de tables temporaires, les opérations de tri, etc.
  5. Déterminez si l'index est efficace en fonction EXPLAINdu résultat et des valeurs des champs ci-dessus. Si typele type d'index attendu est affiché et keyque le champ affiche le nom d'index réel utilisé, l'index est valide.
    Insérer la description de l'image ici

Grâce EXPLAINau résultat de l’analyse, vous pouvez déterminer si la requête utilise l’index efficacement. Si l'index ne prend pas effet, vous pouvez vérifier davantage la définition de la table, la définition de l'index, l'instruction de requête, etc. pour vous assurer que l'index est utilisé correctement.

Résumer

Les index MySQL jouent un rôle très important dans les performances et l'efficacité des bases de données. Lorsque vous utilisez des index MySQL, vous devez prêter attention aux aspects suivants :

  1. Type d'index approprié : MySQL prend en charge plusieurs types d'index, tels que les index ordinaires, les index uniques, les index de clé primaire, les index composites et les index de texte intégral. Différents types d'index conviennent à différents scénarios de requête. Le choix du type d'index approprié peut réduire le temps de requête et les opérations d'E/S, et améliorer la vitesse de récupération des données.

  2. Colonnes indexées : les colonnes indexées doivent être sélectionnées avec une sélectivité élevée et leur plage de distribution de valeurs doit être aussi large que possible, ce qui peut réduire le nombre de recherches d'index. Évitez d'indexer des colonnes de texte longues, binaires ou trop longues. L'indexation de ces types de colonnes réduira l'efficacité des requêtes.

  3. Ordre de l'index : lors de la création d'un index composite, vous devez prendre en compte l'ordre des colonnes. Différents ordres peuvent avoir un impact important sur les performances des requêtes. Habituellement, le fait de placer des colonnes très distinctives devant l'index composite peut garantir que les enregistrements qui remplissent les conditions sont localisés plus rapidement.

  4. Nombre d'index : Trop d'index augmentera le coût de maintenance et l'espace de stockage de la base de données, mais sans index, la requête devra analyser toutes les tables, ce qui est très inefficace. Par conséquent, le nombre d’index créés doit se situer dans une plage appropriée et éviter un nombre excessif ou insuffisant.

  5. Maintenir les index : à mesure que les données sont insérées, mises à jour et supprimées, la maintenance des index devient un problème critique. Les opérations de mise à jour fréquentes entraîneront une défaillance de l'index ou un fractionnement de page, affectant les performances. Pour les tables qui nécessitent un grand nombre de mises à jour, vous pouvez envisager de supprimer d'abord l'index, puis de reconstruire l'index une fois les mises à jour terminées.

  6. Surveiller les index : les développeurs peuvent utiliser les propres outils de MySQL ou des outils tiers pour surveiller l'utilisation et l'efficacité des index. Grâce à la surveillance, vous pouvez comprendre le comportement des requêtes, identifier les requêtes à haute fréquence ou les requêtes inefficaces, et effectuer l'optimisation et les ajustements correspondants.

おすすめ

転載: blog.csdn.net/pengjun_ge/article/details/132603758