Quelqu'un peut-il expliquer un peu le plan d'explication et comment obtenir le plan d'explication d'une requête? De plus, s'il existe un script sql qui peut être utilisé comme utilitaire pour cela, ce serait formidable.
oracle
oracle-11g-r2
user419534
la source
la source
Réponses:
Vous pouvez utiliser le package DBMS_XPLAN :
la source
Remplacez le ... par votre instruction SQL. Après avoir exécuté cela, exécutez ce qui suit pour afficher le plan:
Pour plus d'informations, reportez-vous aux sections Overview ou Usage du manuel Oracle 11g Performance Tuning Guide.
la source
Le plan d'exécution SQL estimé
Le plan d'exécution estimé est généré par l'Optimiseur sans exécuter la requête SQL. Vous pouvez générer le plan d'exécution estimé à partir de n'importe quel client SQL à l'aide d' EXPLAIN PLAN FOR ou vous pouvez utiliser Oracle SQL Developer pour cette tâche.
EXPLIQUER LE PLAN POUR
Lorsque vous utilisez Oracle, si vous ajoutez la
EXPLAIN PLAN FOR
commande à une requête SQL donnée, la base de données stockera le plan d'exécution estimé dans le dossier associéPLAN_TABLE
:Pour afficher le plan d'exécution estimé, vous devez utiliser
DBMS_XPLAN.DISPLAY
, comme illustré dans l'exemple suivant:Développeur Oracle SQL
Si vous avez installé SQL Developer, vous pouvez facilement obtenir le plan d'exécution estimé pour n'importe quelle requête SQL sans avoir à ajouter la commande EXPLAIN PLAN FOR:
Le plan d'exécution SQL réel
Le plan d'exécution SQL réel est généré par l'Optimiseur lors de l'exécution de la requête SQL. Ainsi, contrairement au plan d'exécution estimé, vous devez exécuter la requête SQL afin d'obtenir son plan d'exécution réel.
Le plan réel ne devrait pas différer de manière significative de celui estimé, tant que les statistiques du tableau ont été correctement collectées par la base de données relationnelle sous-jacente.
Indice de requête GATHER_PLAN_STATISTICS
Pour demander à Oracle de stocker le plan d'exécution réel pour une requête SQL donnée, vous pouvez utiliser l'
GATHER_PLAN_STATISTICS
indicateur de requête:Pour visualiser le plan d'exécution réel, vous pouvez utiliser
DBMS_XPLAN.DISPLAY_CURSOR
:Activer les STATISTIQUES au niveau de la connexion DB
Si vous souhaitez obtenir les plans d'exécution pour toutes les requêtes générées au cours d'une session donnée, vous pouvez définir la
STATISTICS_LEVEL
configuration de la session sur TOUS:Cela aura le même effet que la définition de l'
GATHER_PLAN_STATISTICS
indicateur de requête sur chaque requête d'exécution. Ainsi, tout comme avec l'GATHER_PLAN_STATISTICS
indicateur de requête, vous pouvez utiliserDBMS_XPLAN.DISPLAY_CURSOR
pour afficher le plan d'exécution réel.la source