Voir le plan d’éxécution d’une requête.

Posted on septembre 14th, 2007 in DataBase, Oracle, Tips by David

Un ptit rappel ne fait pas de mal :P

En premier, il fait créer une table ou les plans seront stockés ( PLAN_TABLE ) .

C’est pas compliqué :

system@DB.WORLD> @?/rdbms/admin/utlxplan.sql

Table créée.

Après rien de complexe non plus :

explain plan for <<le code SQL>>

Soit par exemple :

system@DB.WORLD> explain plan for select * from v$session;

Explicité.

La encore rien de transcendant … :)

Et pour finir :

system@DB.WORLD> @?/rdbms/admin/utlxpls.sql
PLAN_TABLE_OUTPUT
—————————————————————————————————-
Plan hash value: 319272779

——————————————————————————————–
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
——————————————————————————————–
| 0 | SELECT STATEMENT | | 1 | 1134 | 0 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 1 | 1134 | 0 (0)| 00:00:01 |
|* 2 | FIXED TABLE FULL | X$KSUSE | 1 | 925 | 0 (0)| 00:00:01 |
|* 3 | FIXED TABLE FIXED INDEX| X$KSLED (ind:2) | 1 | 209 | 0 (0)| 00:00:01 |
——————————————————————————————–

Predicate Information (identified by operation id):
—————————————————

2 - filter(”S”.”INST_ID”=USERENV(’INSTANCE’) AND BITAND(”S”.”KSSPAFLG”,1)<>0 AND
BITAND(”S”.”KSUSEFLG”,1)<>0)
3 - filter(”S”.”KSUSEOPC”=”E”.”INDX”)

17 ligne(s) sélectionnée(s).

Voili voilou !

a+