Informations de jointure binaire

La sortie de la commande db2expln peut contenir des informations sur les jointures dans une instruction expliquée.

Chaque fois qu'une jointure binaire est effectuée, l'une des instructions suivantes s'affiche:
   Hash Join
   Merge Join
   Nested Loop Join
Une jointure externe sur l'élément de gauche est indiquée par l'une des instructions suivantes:
   Left Outer Hash Join
   Left Outer Merge Join
   Left Outer Nested Loop Join

Dans le cas d'une fusion ou d'une jointure par boucle imbriquée, la table externe de la jointure est la table référencée dans l'instruction d'accès précédente (affichée dans la sortie). La table interne de la jointure est la table qui a été référencée dans l'instruction d'accès contenue dans la portée de l'instruction de jointure. Dans le cas d'une jointure par hachage, les instructions d'accès sont inversées: la table externe est contenue dans la portée de la jointure et la table interne apparaît avant la jointure.

Dans le cas d'une jointure par hachage ou par fusion, les instructions supplémentaires suivantes peuvent apparaître:
  •    Early Out: Single Match Per Outer Row
    Dans certains cas, une jointure doit simplement déterminer si une ligne de la table interne correspond à la ligne en cours de la table externe.
  •    Residual Predicate(s)
       |  #Predicates = n
    Il est possible d'appliquer des prédicats une fois la jointure terminée. Cette instruction affiche le nombre de prédicats appliqués.
Dans le cas d'une jointure par hachage, les instructions supplémentaires suivantes peuvent apparaître:
  •    Process Hash Table For Join
    La table de hachage est créée à partir de la table interne. Cette instruction indique si la génération de la table de hachage a été transférée dans un prédicat lors de l'accès à la table interne.
  •    Process Probe Table For Hash Join
    Lors de l'accès à la table externe, une table de vérification peut être générée pour améliorer les performances de la jointure. Cette instruction indique si une table de vérification a été générée lors de l'accès à la table externe.
  •    Estimated Build Size: n
    Cette instruction affiche le nombre estimé d'octets nécessaires à la génération de la table de hachage.
  •    Estimated Probe Size: n
    Cette instruction affiche le nombre estimé d'octets nécessaires à la génération de la table de vérification.
Dans le cas d'une jointure par boucle imbriquée, l'instruction suivante peut apparaître immédiatement après l'instruction de jointure:
   Piped Inner
Cette instruction indique que la table interne de la jointure est le résultat d'une autre série d'opérations. Il est également appelé composite interne.
Si une jointure implique plus de deux tables, les étapes d'explication doivent être lues de haut en bas. Par exemple, supposons que la sortie EXPLAIN ait le flux suivant:
   Access ..... W
   Join
   |  Access ..... X
   Join
   |  Access ..... Y
   Join
   |  Access ..... Z
Les étapes d'exécution seraient les suivantes:
  1. Prenez une ligne de qualification de la table W.
  2. Joignez une ligne de W à la ligne suivante de la table X et appelez le résultat P1 (pour le résultat de jointure partielle numéro 1).
  3. Joignez P1 à la ligne suivante de la table Y pour créer P2.
  4. Joignez P2 à la ligne suivante de la table Z pour créer une ligne de résultat complète.
  5. S'il y a plus de lignes dans Z, passez à l'étape 4.
  6. S'il y a plus de lignes dans Y, passez à l'étape 3.
  7. S'il y a plus de lignes dans X, passez à l'étape 2.
  8. S'il y a plus de lignes dans W, passez à l'étape 1.