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.
Opérateurs EXPLAIN pour les plans de requêtes Amazon Redshift
Cette section décrit brièvement les opérateurs que vous voyez le plus souvent dans la EXPLAIN sortie.
Scan séquentiel
L’opérateur d’analyse séquentiel (Seq Scan) indique une analyse de table. Seq Scan analyse chaque colonne de la table de manière séquentielle du début à la fin et évalue les contraintes de requête (dans la WHERE clause) pour chaque ligne.
Opérateurs de jointure
Amazon Redshift sélectionne les opérateurs de jointure en fonction de la conception physique des tables jointes, de l’emplacement des données requises pour la jointure et des exigences spécifiques à la requête elle-même.
Boucle imbriquée
Une boucle imbriquée est principalement utilisée pour les jointures croisées. Les jointures croisées sont des jointures sans condition de jointure qui entraînent le produit cartésien de deux tables. Les boucles imbriquées sont généralement exécutées sous forme de boucles imbriquées, qui sont les types de jointure les plus lents possibles. Si une boucle imbriquée est présente, vous pouvez voir un événement d'alerte de boucle imbriquée dans la vue STL_ALERT_EVENT_LOG. Vous pouvez exécuter la requête suivante pour identifier les requêtes comportant des boucles imbriquées :
select q.query, trim(q.querytxt) as sql_query, q.starttime from stl_query q join stl_alert_event_log l on l.query = q.query and l.event like 'Nested Loop Join in the query plan%' order by q.starttime desc;
Jointure par hachage et hachage
La jointure par hachage et les opérateurs de hachage sont généralement plus rapides qu'une jointure par boucle imbriquée. Ces opérateurs sont utilisés pour les jointures intérieures et les jointures extérieures gauche et droite. Vous pouvez utiliser la jointure par hachage et les opérateurs de hachage lorsque vous joignez des tables dont les colonnes de jointure ne sont pas à la fois des clés de distribution et des clés de tri. L'opérateur de hachage crée la table de hachage pour la table interne dans la jointure. L'opérateur de jointure par hachage lit la table externe, hache la colonne de jointure et trouve des correspondances dans la table de hachage interne.
Joindre par fusion
L'opérateur de jointure par fusion est généralement la jointure la plus rapide et est utilisé pour les jointures internes et les jointures externes. La jointure par fusion n'est pas utilisée pour les jointures complètes. Vous pouvez utiliser une jointure par fusion lorsque vous joignez des tables dont les colonnes de jointure sont à la fois des clés de distribution et des clés de tri, et lorsque moins de 20 % des tables de jointure ne sont pas triées. L'opérateur de jointure par fusion lit deux tables triées dans l'ordre et trouve les lignes correspondantes. Pour voir le pourcentage de lignes non triées, interrogez la table système SVV_TABLE_INFO.
Opérateurs d’agrégation
Le plan de requête utilise les opérateurs suivants dans les requêtes impliquant des fonctions et des GROUP BY opérations d'agrégation :
-
Agrégat — Opérateur pour les fonctions d'agrégation scalaires telles que et
AVGSUM -
HashAggregate— Opérateur pour les fonctions d'agrégation groupées non triées
-
GroupAggregate— Opérateur pour les fonctions d'agrégation groupées triées
Opérateurs de tri
Le plan de requête utilise les opérateurs suivants lorsque les requêtes doivent trier ou fusionner des ensembles de résultats :
-
Trier : évalue la
ORDER BYclause et les autres opérations de tri, telles que les tris requis par lesUNIONrequêtes et les jointures, lesSELECT DISTINCTrequêtes et les fonctions de fenêtre -
Merge — Produit des résultats triés finaux en fonction des résultats triés intermédiaires issus d'opérations parallèles
Opérateurs UNION, INTERSECT et EXCEPT
Le plan de requête utilise les opérateurs suivants pour les requêtes impliquant des opérations définies avec UNIONINTERSECT, et EXCEPT :
-
Sous-requête : utilisée pour exécuter
UNIONdes requêtes -
Hash Intersect Distinct — Utilisé pour exécuter des requêtes
INTERSECT -
SetOp Sauf — Utilisé pour exécuter
EXCEPT(ouMINUS) des requêtes
Autres opérateurs
Les opérateurs suivants apparaissent également fréquemment en EXPLAIN sortie pour les requêtes de routine :
-
Unique — Supprime les doublons pour les requêtes et les
SELECT DISTINCTrequêtesUNION -
Limite — Traite la
LIMITclause -
Fenêtre — Exécute les fonctions de fenêtre
-
Résultat — Exécute des fonctions scalaires qui n'impliquent aucun accès à une table
-
Sous-plan : utilisé pour certaines sous-requêtes
-
Réseau — Envoie les résultats intermédiaires au nœud principal pour un traitement ultérieur
-
Materialize — Enregistre les lignes pour les saisir dans les jointures par boucle imbriquées et dans certaines jointures par fusion