Maison >base de données >tutoriel mysql >Quel est le coût de création, de suppression et d'utilisation d'index Mysql ?

Quel est le coût de création, de suppression et d'utilisation d'index Mysql ?

王林
王林avant
2023-06-03 15:55:03890parcourir

    1. Création et suppression d'index dans Mysql

    les moteurs innodb et myisam seront automatiquement la clé primaire ou auront la Attribut UNIQUE Les colonnes sont indexées.

    Si vous souhaitez indexer d'autres colonnes, vous devez l'indiquer explicitement.

    1. Créez un index lors de la création d'une table

    CREATE TABLE 表名 (
        各个列的信息...,
        (KEY/INDEX) 索引名 (需要被索引的单个列或多个列)
    )

    Notez que KEY ou INDEX peuvent être utilisés comme synonymes.

    Par exemple, lors de la création de la table index_demo, ajoutez un index commun pour les colonnes c2 et c3 :

    CREATE TABLE index_demo(
        c1 INT,
        c2 INT,
        c3 CHAR(1),
        PRIMARY KEY(c1),
        INDEX idx_c2_c3 (c2, c3)
    );

    Le nom de l'index créé ici est idx_c2_c3 Bien que l'index. Le nom peut être arbitraire, il est recommandé d'utiliser idx_ comme préfixe, suivi du nom de colonne de l'index à reprendre et de plusieurs colonnes séparées par des traits de soulignement.

    2. Ajouter un index lors de la modification de la structure de la table

    ALTER TABLE 表名 ADD (KEY/INDEX) 索引名 (需要被索引的单个列或多个列);

    3 Supprimer l'index lors de la modification de la structure de la table

    ALTER TABLE 表名 DROP (KEY/INDEX) 索引名;

    Maintenant, supprimez l'index initial. L'index créé idx_c2_c3 peut s'écrire comme ceci :

    ALTER TABLE index_demo DROP INDEX idx_c2_c3;

    2. Le coût de l'index

    Bien que les index soient une bonne chose, ils ne peuvent pas être créés arbitrairement.

    1. Le coût de l'espace

    C'est très évident.

    • Chaque fois qu'un index est créé, un arbre B+ doit être construit pour celui-ci.

    • Chaque nœud de chaque arbre B+ est une page de données, qui occupera 16 Ko d'espace de stockage par défaut.

    • Un grand arbre B+ est composé de nombreuses pages de données.

    Donc, cela prendra beaucoup d'espace de stockage.

    2. Coût en temps

    Le maintien de la séquence prend du temps

    Chaque fois que vous ajoutez, supprimez ou modifiez des données dans le tableau, il est nécessaire de modifier chaque index d'arbre B+.

    On sait :

    • B+ Les nœuds à chaque niveau de l'arborescence forment une liste doublement chaînée par ordre croissant des valeurs de la colonne d'index. .

    • Qu'il s'agisse d'un nœud feuille ou d'un nœud interne, les enregistrements internes sont classés par ordre de valeur de la colonne d'index, formant une liste simple chaînée.

    Par conséquent, lors de l'ajout, de la suppression ou de la modification d'opérations, cela peut endommager le tri des nœuds et des enregistrements, et le moteur de stockage aura besoin de plus de temps pour le fractionnement des pages. , recyclage, etc. Opération visant à maintenir l'ordre des nœuds et des enregistrements.

    Si beaucoup d'index sont créés, vous pouvez imaginer que l'arbre B+ correspondant à chaque index doit subir des opérations de maintenance associées, ce qui engendrera beaucoup de consommation.

    Analyse fastidieuse du plan d'exécution

    Avant d'exécuter l'instruction de requête, un plan d'exécution sera d'abord généré.

    De manière générale, une instruction de requête utilise au plus un index secondaire lors de l'exécution. Lors de la génération du plan d'exécution, vous devez calculer le coût d'utilisation de différents index pour exécuter la requête, et enfin sélectionner le plus bas. . Index pour la requête.

    Si trop d'index sont créés, l'analyse des coûts peut prendre trop de temps, affectant ainsi les performances d'exécution des instructions de requête.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer