Maison > base de données > tutoriel mysql > Analyser ce qu'est le pushdown d'index Mysql ? Est-ce que cela aide à l'optimisation ?

Analyser ce qu'est le pushdown d'index Mysql ? Est-ce que cela aide à l'optimisation ?

藏色散人
Libérer: 2021-11-04 15:51:54
avant
1690 Les gens l'ont consulté

Optimisation des performances MySQL : qu'est-ce que le pushdown d'index ?

Introduction

Le pushdown des conditions d'index (index condition pushdown), appelé ICP, a été lancé dans la version Mysql5.6 et est utilisé pour optimiser les requêtes.

Lors d'une requête utilisant un index de clé non primaire (également appelé index normal ou index secondaire) sans utiliser ICP, le moteur de stockage récupère les données via l'index puis les renvoie au serveur MySQL. Le serveur détermine ensuite si le. les données remplissent les conditions.

Lors de l'utilisation d'ICP, s'il existe des conditions de jugement pour certaines colonnes indexées, le serveur MySQL transmettra cette partie des conditions de jugement au moteur de stockage, puis le moteur de stockage jugera si l'index répond aux conditions transmises par le serveur MySQL. . Uniquement Lorsque l'index remplit les conditions, les données seront récupérées et renvoyées au serveur MySQL.

L'optimisation du refoulement des conditions d'index peut réduire le nombre de fois où le moteur de stockage interroge la table sous-jacente, et peut également réduire le nombre de fois où le serveur MySQL reçoit des données du moteur de stockage.

【Apprentissage recommandé : Tutoriel vidéo mysql

Ouvrir

Avant de commencer, préparez une table utilisateur (user), dont les principaux champs sont : id, nom, âge, adresse. Créez un index commun (nom, âge).

Supposons qu'il soit obligatoire de faire correspondre tous les utilisateurs dont le prénom est Chen. L'instruction SQL est la suivante :

SELECT * from user where  name like '陈%'
Copier après la connexion

Selon le principe du "meilleur préfixe gauche", un index conjoint (nom, âge) est utilisé ici pour requête, Les performances sont nettement supérieures à celles de l'analyse complète de la table.

La question est : et s'il y avait d'autres conditions ? Supposons qu'il existe une autre exigence pour faire correspondre les utilisateurs dont le prénom est Chen et dont l'âge est de 20 ans. L'instruction SQL à ce moment est la suivante :

SELECT * from user where  name like '陈%' and age=20
Copier après la connexion

Comment cette instruction SQL doit-elle être exécutée ? Ce qui suit est une analyse des versions avant et après Mysql5.6.

Version MySQL antérieure à 5.6

La version antérieure à 5.6 n'a pas l'optimisation du push down d'index, donc le processus d'exécution est le suivant :

Analyser ce quest le pushdown dindex Mysql ? Est-ce que cela aide à loptimisation ?

ignorera le champ d'âge et interrogera directement par nom (nom. , âge) Deux résultats ont été trouvés sur l'arborescence dans cette leçon, avec des ID respectivement 2 et 1. Ensuite, les valeurs d'ID obtenues ont été renvoyées à la table pour interrogation encore et encore, ce processus a donc nécessité de revenir à la table deux fois.

Mysql5.6 et versions ultérieures

La version 5.6 ajoute l'optimisation du pushdown d'index. Le processus d'exécution est le suivant :

Analyser ce quest le pushdown dindex Mysql ? Est-ce que cela aide à loptimisation ?

InnoDB n'ignore pas le champ d'âge, mais détermine l'âge à l'intérieur de l'index. est-il égal à 20 ? Les enregistrements qui ne sont pas égaux à 20 sont ignorés directement. Par conséquent, un seul enregistrement correspond dans l'arborescence d'index. À ce stade, utilisez cet ID pour revenir à la table dans l'index de clé primaire. arbre pour interroger toutes les données. Ce processus ne doit être retourné à la table qu'une seule fois.

Pratique

Bien sûr, l'analyse ci-dessus n'est qu'en principe, nous pouvons l'analyser dans la pratique, alors Chen a installé la version Mysql5.6 de Mysql et analysé la déclaration ci-dessus, comme indiqué ci-dessous :

Analyser ce quest le pushdown dindex Mysql ? Est-ce que cela aide à loptimisation ?

Selon expliquer Les résultats de l'analyse montrent que la valeur de Extra est Utilisation de la condition d'index, ce qui signifie que le refoulement d'index a été utilisé.

Résumé

L'optimisation du refoulement d'index sur les index de clé non primaire peut réduire efficacement le nombre de retours de table et améliorer considérablement l'efficacité des requêtes.

Pour désactiver le pushdown d'index, vous pouvez utiliser la commande suivante. La modification du fichier de configuration ne sera plus décrite. Après tout, pourquoi une fonction aussi excellente devrait-elle être désactivée :

set optimizer_switch='index_condition_pushdown=off';
Copier après la connexion
.

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!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal