L’explain plan chez oracle c’est une possiblité de découvrir comment le moteur traite vos requêtes. Ainsi, vous voyez le cheminement réalisé par le moteur pour vous apporter le résultat.
Explain plan est donc le prinicipal outil pour optimiser vos requêtes et vos bases. Mais attention, le plus dur n’est pas de réaliser l’explain plan mais sa lecture et son interprétation (et ça il faut des années pour devenir un champion des l’optimisation).
Comment lancer un Explain Plan d’une requête ?
Si nécessaire, mettez en place le module utlxplan.sql
@$ORACLE_HOME/rdbms/admin/utlxplan.sql
Ensuite, définissez le nom de votre plan :
RENAME PLAN_TABLE TO monplan;
Ensuite lancez la requête qui va construire votre explain plan.
EXPLAIN PLAN FOR SELECT champs1, champs2, champs3 FROM matable;
Maintenant, vous pouvez consulter le résultat en utilisant le DBMS_XPLAN.
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
Si vous souhaitez voir quelques exemple sur comment paser un explain, vous pouvez consulter la page du site oracle.
Comment l’analyser ?
Clairement, ce n’est pas dans cet article que vous allez apprendre à optimiser vos requêtes et bases.
Sur le blog de Markus Winand, vous trouverez cette page qui va vous permettre de trouver les principaux termes que vous retrouverez dans les résultats d’un explain plan. En effet, le plan repose principalement sur l’exploitations de jointures et d’index pour vous apporter le résultat le plus vite possible.
Un résultat resemble à ceci :
| Id| Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT | | 4 | 16208 | 3 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| CONSULTANT | 4 | 16208 | 3 (0)| 00:00:01 | |*2 | INDEX RANGE SCAN | CONSULTANT_PK | 4 | | 2 (0)| 00:00:01 |
Source : SOAT
Dedans on peuty découvrir :
- le type d’opération
- le nombre de lignes parcourues
- le volume utilisé
- le coût
- le temps
Mais le principal c’est l’ordre. Un plan se lit de bas en haut. Le moteur commence par les actions du bas et remonte progressivement. Donc dans l’exemple, il accède à un index CONSULTANT_PK puis à la table CONSULTANT.
En apprendre plus par les experts oracle
Pour cela il existe une très bonne vidéo d’une interventionde Maria Colgan.
Et si vous voulez en voir une un peu plus courte mais déjà bien complète, commencez par celle de Jeff Smith.
Je vous invite à lire le document : xplan_webinar.pdf