Bonjour,

pouvez-vous analyser cette requête et m'indiquer quelles optimisations peuvent être mises en place (quels champs à indexer, index composite..etc.). Je vous en remercie d'avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
SELECT to_char(C.date_stat,'yyyy/mm') AS DATE_STAT,
        to_char(L.date_stat,'yyyy/mm') AS DATE_STAT_M,
        C.classe, C.service,
        L.classe, L.service,
        avg(C.tps) AS TEMPS_MOY,
        avg(L.tps) AS TEMPS_MOY_M,
        PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY C.tps DESC) AS TEMPS_MED,
        PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY L.tps DESC) AS TEMPS_MED_M
 
FROM STAT C, STAT L
 
WHERE C.date_stat BETWEEN TRUNC( SYSDATE, 'MM' ) AND last_day(SYSDATE)
AND L.date_stat BETWEEN TRUNC( ADD_MONTHS(SYSDATE, -1), 'MM') AND last_day(ADD_MONTHS(SYSDATE, -1))
AND C.classe = L.classe
AND C.service = L.service
 
GROUP BY
	to_char(C.date_stat,'yyyy/mm'),to_char(L.date_stat,'yyyy/mm'),C.classe,C.service, L.classe, L.service
Un index normal non unique composite est déjà créé sur :

1 service
2 date_stat
3 un autre champ non utilisé dans la requête

MERCI.