Maison > base de données > tutoriel mysql > Analyse de l'ordre d'exécution des instructions dans MySQL et de l'étape de traitement des requêtes

Analyse de l'ordre d'exécution des instructions dans MySQL et de l'étape de traitement des requêtes

不言
Libérer: 2018-08-22 10:07:09
original
1583 Les gens l'ont consulté

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>
Copier après la connexion

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

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 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

8. SELECT : Effectuez une opération de sélection, sélectionnez la colonne spécifiée et insérez-la dans la table virtuelle VT8.

9. DISTINCT : Enregistrements en double dans VT8. Générez la table virtuelle VT9.

10. ORDER BY : Triez les enregistrements de la table virtuelle VT9 selon 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 mysql

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:php.cn
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