Maison > Article > base de données > Analyse de l'ordre d'exécution des instructions dans MySQL et de l'étape de traitement des requêtes
Le contenu de cet article concerne la séquence d'exécution des instructions dans MySQL et l'analyse de l'étape de traitement des requêtes. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Les instructions MySQL sont divisées en 11 étapes au total, comme indiqué dans la figure ci-dessous. L'opération FROM est toujours exécutée en premier et l'opération LIMIT est exécutée en dernier. Chaque opération générera une table virtuelle, qui sera utilisée comme entrée pour le traitement. Cependant, ces tables virtuelles sont transparentes pour l'utilisateur, mais seule la dernière table virtuelle sera renvoyée en conséquence. Si l'opération correspondante n'est pas spécifiée dans l'instruction, l'étape correspondante sera ignorée.
(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) HAVING <having_condition> (9) ORDER BY <order_by_condition> (10) LIMIT <limit_number>
Analysons chaque étape du traitement des requêtes en détail
1 FORM : Calculez Descartes sur la table de gauche et la table de droite de FROM. produit. Générer la table virtuelle VT1
2, ON : effectuez un filtrage ON sur la table virtuelle VT1, et seules les lignes qui répondent à la bdb1bdfcce4b01d909fe0d6bfac7e08b
3. JOIN : Si OUTER JOIN (telle que la jointure gauche, la jointure droite) est spécifiée, les lignes sans correspondance dans la table conservée seront ajoutées à la table virtuelle VT2 en tant que lignes externes. générer la table virtuelle VT3, si la clause rug from contient plus de deux tables, alors les étapes 1 à 3 seront répétées pour le résultat VT3 généré par la connexion de jointure précédente et la table suivante jusqu'à ce que toutes soient traitées dans la table.
4. WHERE : Effectuez le filtrage des conditions WHERE sur la table virtuelle VT3. Seuls les enregistrements qui répondent à la 076f2557c38ed5b0e9a22b49eae60349 seront insérés dans la table virtuelle VT4.
5. GROUP BY : Regroupez les enregistrements dans VT4 en fonction des colonnes de la clause group by pour générer VT5.
6. 🎜> : effectuez une opération de cube ou de cumul sur la table VT5 pour générer la table VT6.
7 HAVING : appliquez le filtre ayant à la table virtuelle VT6, uniquement celles qui répondent à la 2b67eb71d02324da7ae84236be401bb2 pour générer la table virtuelle VT10.
11. LIMIT : récupère les enregistrements de la ligne spécifiée, génère la table virtuelle VT11 et renvoie le résultat.
Recommandations associées :Quelles sont les différences entre utf8 et utf8mb4 dans MySQL ?
Comment modifier la limite de longueur de la fonction group_conca dans mysql
Utilisation de count() dans une grande table mysql et optimisation de count() dans mysqlCe 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!