Maison >base de données >tutoriel mysql >Quel est le principe d'utilisation de MySQL Join ?

Quel est le principe d'utilisation de MySQL Join ?

PHPz
PHPzavant
2023-05-26 10:07:171288parcourir

    Type de jointure

    • jointure à gauche, en utilisant la table de gauche comme table motrice et la table de gauche comme base de l'ensemble de résultats, connectant les données de la table de droite à l'ensemble de résultats

    Quel est le principe dutilisation de MySQL Join ?

    • Jointure à droite, utilisez la table de droite comme table motrice, utilisez la table de droite comme base de l'ensemble de résultats, connectez les données de la table de gauche à l'ensemble de résultats

    Quel est le principe dutilisation de MySQL Join ?

    • jointure interne , l'ensemble de résultats prend l'intersection des deux tables

    Quel est le principe dutilisation de MySQL Join ?

    • jointure complète, l'ensemble de résultats est l'union des deux tables

    • mysql n'a pas de jointure complète, l'union remplace

      La différence entre union et union, tout est que l'union supprimera les doublons

    Quel est le principe dutilisation de MySQL Join ?

    • produit cartésien de jointure croisée

    • Si la condition Where n'est pas utilisée, l'ensemble de résultats est le produit des deux lignes de table associées

      La différence entre and est que lorsque

      cross join crée l'ensemble de résultats, l'ensemble de résultats sera filtré selon la condition on
    • straight_join
    • Spécifiez la table du pilote strictement selon l'ordre SQL,

      La table de gauche est le pilote

    Principe de jointure

    Cette phrase peut être réécrite comme ceci : son essence peut être comprise comme le fonctionnement d'une boucle imbriquée , où la boucle for externe entraîne la table, et la boucle for interne est la table pilotée. Il peut être divisé en trois algorithmes selon la stratégie de connexion des données composées.

      Jointure simple en boucle imbriquée
    • Par exemple, s'il y a la table A et la table B, si les deux tables sont JOIN, les conditions de connexion de la table A seront utilisées pour parcourir la table B une par une, en faisant correspondre les même identifiant de la table A et de la table B. Le mettre dans l'ensemble de résultats est la plus faible efficacité.

      Index Nested-Loop Join
    • Processus d'exécution (analyse du disque)
    • Lire une ligne de données R de la table t1 De la ligne de données R, retirez le champ a de la table t2

       ; Recherche arborescente pour trouver

       ;

      Retirez les lignes qui répondent aux conditions du tableau t2 et formez une ligne avec R dans le cadre de l'ensemble de résultats

    • Répétez les étapes 1 à 3 jusqu'à ce que la boucle se termine à la fin du tableau t1 ;
    • Pour chaque ligne de R, recherchez dans le tableau t2 en fonction du champ a, en utilisant un processus de recherche arborescente.

      Block Nested-Loop Join
    • mysql utilise un tampon appelé

      join buffer
    • r pour réduire le nombre de boucles. Ce tampon fait 256 Ko par défaut et peut être visualisé via la commande show variables comme 'join_%'.
    • La méthode spécifique consiste à interroger les colonnes qualifiées de la première table dans le tampon en une seule fois, puis à parcourir la deuxième table une fois, à la comparer avec toutes les valeurs du tampon une par une et à ajouter les résultats de la comparaison à l'ensemble de résultats
    • Le tampon de jointure ne sera utilisé que lorsque le type JOIN est ALL, index, rang ou index_merge Vous pouvez afficher le type de requête SQL via expliquer.

      Optimisation des jointures
    • Afin d'optimiser l'algorithme de jointure, l'algorithme de jointure en boucle imbriquée Index est utilisé pour créer des champs d'index sur les champs de connexion
    • Utilisez des tables avec de petits volumes de données pour piloter des tables avec gros volumes de données
    • Augmentez la taille du tampon de jointure (plus il y a de données mises en cache en même temps, moins la table externe est cyclée)
    • Faites attention à la conversion implicite et au codage des caractères de la jointure champ pour éviter l'échec de l'index
    🎜🎜

    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