TP6 - Optimisation-IJB-VM 2019-2020
TP6 - Optimisation-IJB-VM 2019-2020
TP6 - Optimisation-IJB-VM 2019-2020
Département Informatique
Remarque :
Q1: Q2 :
SELECT sum(dollarcost) SELECT sum(dollarcost)
From ACTVARS A, Timelevel T From ACTVARS A, PRODLEVEL P ,TIMELEVEL T
Where A.TIME_LEVEL=T.TID and Where A.TIME_LEVEL=T.TID and
T.MONTHLEVEL=3 A.PRODUCT_LEVEL=P.CODE_LEVEL and
P.CLASS_LEVEL='CI493YZ9KZUJ' and T.MONTH_LEVEL=3
Q3 :
SELECT year_Level, sum(dollarcost)
FROM ACTVARS A,CUSTLEVEL C,PRODLEVEL P ,TIMELEVEL T
WHERE
A.CUSTOMER_LEVEL=C.STORE_LEVEL AND A.TIME_LEVEL=T.TID AND A.CHANNEL_LEVEL=CH.BASE_LEVEL AND
A.PRODUCT_LEVEL=P.CODE_LEVEL AND P.CLASS_LEVEL='CI493YZ9KZUJ' AND
C.RETAILER_LEVEL='RQJNEN0UPKMQ' AND T.MONTH_LEVEL=3 AND CH.ALL_LEVEL ='EFGHIJKLMNOP'
group by year_level
Remarque : il faut changer les valeurs soulignées par des valeurs existant dans la BD.
Questions
1. Exécuter chaque requête et donner son temps d’exécution.
2. Générer et expliquer le plan d’exécution de chaque requête.
3. Pour Q1
a. Créer un index binaire sur la colonne Timelevel
b. Quel est le temps de création de l’index
c. Exécuter Q1, quel est son nouveau temps d’exécution.
d. Afficher son plan d’exécution et vérifier qu’Oracle a réellement utilisé l’index créé.
e. Si l’index n’a pas été utilisé, forcer son utilisation avec un Hint Index.
f. Créer un index de jointure binaire sur l’attribut Timelevel.
g. Répondre aux mêmes questions que b,c,d et e.
4. Pour Q2
a. Reprendre les mêmes questions en créant un index sur les deux attributs Class_level
et Month_level
5. Pour Q3
a. Reprendre les mêmes questions en créant un index sur les quatre attributs
Class_level, Month_level, Reatiler_level et All_level.
b. Créer une vue matérialisée permettant de réduire le coût de Q3.
i. Exécuter la requête après la création de la vue
ii. Donner son nouveau temps et plan d’exécution
c. Comparer les différentes options d’optimisation pour Q3.
Remarque : Pour activer l’affichage du temps d’exécution des requêtes dans SQL Plus, il faut exécuter la commande
suivante : SET timing ON