Académique Documents
Professionnel Documents
Culture Documents
ORACLE
EXPLAIN PLAN
[SET statement_id=id]
[INTO table_name]
FOR sql_statement
◼ La première ligne de cette commande indique à la
base de données qu’elle va expliquer le plan
d’exécution pour la requête sans réellement
l’exécuter.
◼ La deuxième ligne marque les enregistrements
relatifs à cette requête dans la table PLAN_TABLE
avec une valeur id dans la colonne Statement_Id.
◼ La requête à analyser suit le mot clé for
◼ Interrogez la table PLAN_TABLE au moyen de la requête
suivante.
DEF id=id_of_explan_plan
SELECT LPAD(' ', 2*(level-1)) || level ||'.'||
NVL(position,0) ||' '|| operation ||' '|| options ||' '||
object_name ||' '|| object_type ||' '||
DECODE(id, 0, ' id = '||statement_id||' Cost = '||Position) "Query
Plan"
FROM plan_table
START WITH id = 0 AND statement_id = '&id'
CONNECT BY prior id = parent_id
AND statement_id = '&id'
Schéma de la base
EXPLAIN PLAN
SET Statement_Id = ‘TEST’
FOR
select * from emp
2 SELECT STATEMENT
1 TABLE ACCESS (FULL), EMP
2 SELECT STATEMENT
1 TABLE ACCESS (BY USER ROWID), EMP
SELECT *
FROM emp
WHERE empno = 7900;
3 SELECT STATEMENT
2 TABLE ACCESS (BY INDEX ROWID), EMP
1 INDEX (RANGE SCAN), PK_EMP
5 SELECT STATEMENT
4 NESTED LOOPS
1 TABLE ACCESS (FULL), EMP (SCOTT)
3 TABLE ACCESS (BY INDEX ROWID), DEPT (SCOTT)
2 INDEX (UNIQUE SCAN), PK_DEPT (SCOTT)
1- Cette opération extrait toutes les lignes de la table EMP en utilisant
un balayage de table complet.
2- Cette opération extrait un ROWID unique via une consultation d'index de
PK_DEPT
3- Cette opération extrait une ligne de la table DEPT sur la base de son ROWID.
4- Cette opération compare chaque ligne de la première source de lignes enfant
avec toutes les lignes de la seconde, en joignant les paires de lignes répondant
à la condition définie.
5- Cette étape du plan définit cette instruction comme instruction SELECT.
Single Row by Cluster Join
SELECT *
FROM emp
ORDER BY empno;
3 SELECT STATEMENT
2 SORT (ORDER BY)
1 TABLE ACCESS (FULL), EMP
4 SELECT STATEMENT
3 FILTER
1 TABLE ACCESS (FULL), DEPT (SCOTT)
2 TABLE ACCESS (FULL), EMP (SCOTT)
4 SELECT STATEMENT
3 NESTED LOOPS (ANTI)
1 TABLE ACCESS (FULL), DEPT
2 INDEX (RANGE SCAN), I_DEPTNO