par Guillaume Lelarge.

Obtenir un plan d'exécution


Visualiser un plan d'exécution avec Oracle nécessite deux étapes :

  1. Sauvegarder le plan d'exécution dans PLAN_TABLE avec explain plan for

  2. Formater et afficher le plan d'exécution.

Créer et sauvegarder un plan d'exécution

Pour créer un plan d'exécution, vous devez avoir préfixé la requête SQL respective avec explain plan for :

EXPLAIN PLAN FOR select * from dual;

Vous pouvez exécuter la commande explain plan for dans n'importe quel environnement de développement ou dans SQL*Plus. Néanmoins, cela n'affiche pas le plan. Cela le sauvegarde dans une table nommée PLAN_TABLE. À partir de la version 10g, cette table est automatiquement disponible en tant que table temporaire globale. Avec les versions précédentes, vous devez la créer dans chaque schéma où sa présence est nécessaire. Demandez à votre administrateur de base de données de la créer pour vous ou de vous fournir la requête create table provenant de l'installation d'Oracle :

$ORACLE_HOME/rdbms/admin/utlxplan.sql

Vous pouvez exécuter la requête dans n'importe quel schéma pour créer la table PLAN_TABLE dans ce schéma.

Attention

La commande explain plan for pour la commande ne crée pas nécessairement le même plan d'exécution que s'il exécutait la requête.

Afficher le plan d'exécution

Le paquet DBMS_XPLAN a été introduit avec la version 9iR2. Il permet de formater et d'afficher les plans d'exécution stockés dans PLAN_TABLE. L'exemple suivant montre comment afficher le dernier plan d'exécution qui a été créé dans la session courante de la base de données :

select * from table(dbms_xplan.display);

Encore une fois, si cette requête ne fonctionne pas pour vous, demandez l'aide de votre administrateur de bases de données.

La requête affichera le plan d'exécution comme montré dans ce livre :

--------------------------------------------------------------
| Id | Operation         | Name | Rows | Bytes | Cost (%CPU)|.
--------------------------------------------------------------
|  0 | SELECT STATEMENT  |      |    1 |     2 |     2   (0)|.
|  1 |  TABLE ACCESS FULL| DUAL |    1 |     2 |     2   (0)|.
--------------------------------------------------------------

Certaines des colonnes affichées dans le plan d'exécution ont été supprimées pour que l'affichage soit facilement lisible sur la page.

À propos de l'auteur

Photo de Markus Winand

Markus Winand teaches efficient SQL—inhouse and online. He minimizes the development time using modern SQL and optimizes the runtime with smart indexing—for that he also published the book SQL Performance Explained.

Livre de Markus

Couverture du livre « SQL : Au cœur des performances »

L'essence de SQL tuning dans 200 pages.

Acheter de Markus
(Livre de poche et PDF)

Achetez chez Amazon
(Seulement en poche)

“Use The Index, Luke!” by Markus Winand and translated by Guillaume Lelarge is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Privacy | CC-BY-NC-ND 3.0 license