Analyse du plan de requête - Amazon Redshift

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.

Analyse du plan de requête

Avant d’analyser le plan de requête, vous devez savoir comment le lire. Si vous ne savez pas lire un plan de requête, nous vous recommandons de lire Plan de requête avant de poursuivre.

Exécutez la commande EXPLAIN pour obtenir un plan de requête. Pour analyser les données fournies par le plan de requête, procédez comme suit :

  1. Identifiez les étapes ayant le coût le plus élevé. Consacrez-vous à les optimiser lorsque vous effectuez les dernières étapes.

  2. Observez les types de jointure :

    • Boucle imbriquée : ces jointures se produisent généralement parce qu’une condition de jointure a été omise. Pour connaître les solutions recommandées, consultez Boucle imbriquée.

    • Hachage et Joindre par hachage : les jointures par hachage sont utilisées pour joindre des tables dans lesquelles les colonnes de jointure ne sont pas des clés de distribution, ni des clés de tri. Pour connaître les solutions recommandées, consultez Joindre par hachage.

    • Joindre par fusion : aucune modification n’est nécessaire.

  3. Notez quelle table est utilisée pour la jointure interne et quelle table est utilisée pour la jointure externe. Le moteur de requête choisit généralement la plus petite table pour la jointure interne et la plus grande table pour la jointure externe. Si ce choix ne se fait pas, vos statistiques ne sont vraisemblablement pas à jour. Pour connaître les solutions recommandées, consultez Statistiques de table manquantes ou obsolètes.

  4. Vérifiez s’il existe des opérations de tri onéreuses. Si c’est le cas, consultez Lignes non triées ou mal triées pour connaître les solutions recommandées.

  5. Recherchez les opérateurs de diffusion suivants là où il y a des opérations onéreuses :

    • DS_BCAST_INNER : indique que la table est diffusée à tous les nœuds de calcul. Ceci convient pour une petite table, mais n’est pas idéal pour une table de taille plus importante.

    • DS_DIST_ALL_INNER : indique que l’ensemble de la charge de travail est placé sur une seule tranche.

    • DS_DIST_BOTH : indique une redistribution intensive.

    Pour connaître les solutions recommandées pour ces situations, consultez Distribution des données sous-optimales.