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 JoinUne 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 JoinDans 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:
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.Early Out: Single Match Per Outer Row
Il est possible d'appliquer des prédicats une fois la jointure terminée. Cette instruction affiche le nombre de prédicats appliqués.Residual Predicate(s) | #Predicates = n
Dans le cas d'une jointure par hachage, les instructions supplémentaires suivantes peuvent apparaître:
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 Hash Table For 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.Process Probe Table For Hash Join
Cette instruction affiche le nombre estimé d'octets nécessaires à la génération de la table de hachage.Estimated Build Size: n
Cette instruction affiche le nombre estimé d'octets nécessaires à la génération de la table de vérification.Estimated Probe Size: n
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 InnerCette 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 ..... ZLes étapes d'exécution seraient les suivantes:
- Prenez une ligne de qualification de la table W.
- 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).
- Joignez P1 à la ligne suivante de la table Y pour créer P2.
- Joignez P2 à la ligne suivante de la table Z pour créer une ligne de résultat complète.
- S'il y a plus de lignes dans Z, passez à l'étape 4.
- S'il y a plus de lignes dans Y, passez à l'étape 3.
- S'il y a plus de lignes dans X, passez à l'étape 2.
- S'il y a plus de lignes dans W, passez à l'étape 1.