Vous êtes sur la page 1sur 15

TP1: Optimisation de

BD

Ecole Marocaine des sciences de


l’ingénieur
Mohammed Bagour | Anas Timouch

1
2

Objectifs :
Partie 1 :
1.de créer une table destinée à contenir toutes les informations relatives
à un plan d'exécution.

2.d'exécuter une requête en demandant le stockage des explications


relatives à cette requête dans la table précédemment crée

3.d'interroger la table précédemment remplie pour connaître le plan


d'exécution. On utilise la commande EXPLAIN PLAN, et on choisit un
identifiant qui caractérisera le résultat de la commande et on indique la
requête qu’on souhaite analyser.
Partie 2 :
Créer deux tables.
La première table intitulée « emp » contient 14 entrées et la deuxième «
dept » en contient 4 lignes à partir du schéma scott.
Ajouter les deux clés primaires : PK_DEPT sur la table DEPT, et
PK_EMP sur la table EMP.
Créer deux indexes : Ind_DEPTNO sur la colonne DEPTNO de la
table EMP et Ind_JOB sur la colonne JOB de la table EMP.
Afficher et analysez le plan d’exécution physique des requêtes.

5IIR- EMSI Tanger


3

Réalisation :
1) Création des Tables

Figure 1 : creation TABLES

5IIR- EMSI Tanger


4

Figure 3 : création TABLES

Figure 2 : alimentation TABLES

5IIR- EMSI Tanger


5

Création des INDEX :

Figure 4 : création INDEX

Analyse du plan d’exécution physique des requêtes :

1) Requête 1 : SELECT * FROM emp;

Figure 5 : Plan d'execution REQ1

5IIR- EMSI Tanger


6

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;

sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery1’ FOR SELECT * FROM emp;

sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery1’,’ALL’));

2) Requête 2 : SELECT * FROM emp WHERE ROWID = 'à saisir ';

Figure 6 : Plan d'éxecution REQ2

5IIR- EMSI Tanger


7

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;

sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp
WHERE ROWID = 'à saisir ';

sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery2’,’ALL’));

3) Requete 3: SELECT * FROM emp WHERE empno = 7900;

Figure 7 : plan d'execution REQ3

5IIR- EMSI Tanger


8

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;

sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp
WHERE empno = 7900;

sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery3’,’ALL’));

4) Requete 4: SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno;

Figure 8 : plan d'execution REQ4

5IIR- EMSI Tanger


9

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;

sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp, dept
WHERE emp.deptno = dept.deptno

sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery4’,’ALL’));

5) Requete 5 : SELECT * FROM emp, dept WHERE emp.deptno =


dept.deptno AND emp.empno = 7900;

Figure 9 : plan d'execution REQ 5

5IIR- EMSI Tanger


10

Figure 10 : Plan d'execution REQ 5

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;

sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp,
dept WHERE emp.deptno = dept.deptno AND emp.empno = 7900;

sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery5’,’ALL’));

5IIR- EMSI Tanger


11

Requete 6: SELECT * FROM emp ORDER BY empno;

Figure 11 : Plan d'execution REQ 6

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;


sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp
ORDER BY empno;
sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery6’,’ALL’));

5IIR- EMSI Tanger


12

Requete 7: SELECT * FROM emp WHERE job = 'CLERK' OR deptno = 10;

Figure 12 : plan d'execution REQ 7

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;


sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ SELECT * FROM emp WHERE
job = 'CLERK' OR deptno = 10;
sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery7’,’ALL’));

5IIR- EMSI Tanger


13

Requete 8 : SELECT * FROM emp WHERE job = 'CLERK' UNION ALL SELECT * FROM
emp WHERE deptno = 10 AND job
<> 'CLERK';

5IIR-
Figure 13 : EMSI Tanger
plan d'execution REQ8
14

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;


sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT * FROM emp
WHERE job = 'CLERK' UNION ALL SELECT * FROM emp WHERE deptno = 10 AND job
<> 'CLERK';
sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery8’,’ALL’));

Requete 9: SELECT dname, deptno FROM dept WHERE NOT EXISTS (SELECT deptno
FROM emp WHERE dept.deptno = emp.deptno);

Figure 14 : Plan d'execution REQ9

5IIR- EMSI Tanger


15

sql> ALTER SESSION SET STATISTICS_LEVEL = ALL;


sql> EXPLAIN PLAN SET STATEMENT_ID = ‘MyQuery2’ FOR SELECT dname, deptno
FROM dept WHERE NOT EXISTS (SELECT deptno FROM emp WHERE dept.deptno =
emp.deptno);
sql> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’MyQuery9’,’ALL’));

5IIR- EMSI Tanger

Vous aimerez peut-être aussi