Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
JOINTURES EXPLAIN pour les plans de requêtes Amazon Redshift
Amazon Redshift utilise différents opérateurs de jointure pour récupérer les données en fonction des éléments suivants :
-
La conception physique des tables à assembler
-
Structure de la requête
-
L'emplacement des données requises par la jointure
-
Les exigences spécifiques de la requête elle-même
Les types de jointure suivants sont couramment utilisés dans Amazon Redshift :
-
Boucle imbriquée — Une boucle imbriquée se produit lorsqu'il est impossible de créer une table de hachage entre les deux tables. Les boucles imbriquées sont principalement utilisées pour les jointures croisées (produits cartésiens) et pour certaines jointures par inégalité. Cela obligera la base de données à vérifier chaque valeur de la table de gauche par rapport à chaque valeur de la table de droite. La complexité d'une jointure par boucle imbriquée est « quadratique » dans la mesure où vous devez effectuer environ N*N (ou N²) opérations différentes pour traiter la jointure. La boucle imbriquée est le type de jointure le moins optimal.
-
Jointure par hachage : dans le cas d'une jointure par hachage, les conditions de jointure ne sont pas parfaites les unes pour les autres, mais Amazon Redshift peut gérer l'utilisation des jointures par hachage avec un peu de travail. Une jointure par hachage est généralement plus rapide qu'une jointure par boucle imbriquée. Amazon Redshift examine les deux tables et crée entre elles une table de hachage, qui ressemble à une table de recherche située au milieu des tables. Par exemple, la jointure par hachage et les opérateurs de hachage sont utilisés pour joindre des tables dont les colonnes de jointure ne sont pas à la fois des clés de distribution et des clés de tri.
-
Jointure par fusion — Une jointure par fusion est généralement la jointure la plus rapide et est utilisée pour les jointures internes et les jointures externes. Dans une jointure par fusion, les deux tables sont parfaitement adaptées l'une à l'autre. Cela signifie que la condition de jointure de chaque côté est la clé de distribution et la clé de tri. Les deux tables s'alignent parfaitement sans aucun ajustement. Notez que les lignes non triées des tables doivent représenter moins de 20 % des tables jointes. Pour voir le pourcentage de lignes non triées, interrogez la table système SVV_TABLE_INFO. La jointure par fusion n’est pas utilisée pour les jointures complètes.