Tests avec INDEX(service, classe, to_char(date_stat,'yyyy/mm'), tps)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| SELECT to_char(C.date_stat,'yyyy/mm') AS DATE_STAT,
to_char(L.date_stat,'yyyy/mm') AS DATE_STAT_M,
C.service,
L.service,
C.tps AS TEMPS_MOY,
L.tps AS TEMPS_MOY_M
FROM STAT C, STAT L
WHERE to_char(C.date_stat,'yyyy/mm') = to_char(SYSDATE,'yyyy/mm')
AND to_char(L.date_stat,'yyyy/mm') = to_char(ADD_MONTHS(SYSDATE, -1),'yyyy/mm')
AND C.classe = L.classe
AND C.service = L.service |
Je suis en INDEX ACCESS FULL :
SELECT STATEMENT CHOOSE 11373 34018300 4218269200
HASH JOIN 11373 34018300 4218269200
INDEX(FAST FULL SCAN) TUXEDO.STAT_BC_IDX2 ANALYZED 1492 482727 29929074
INDEX(FAST FULL SCAN) TUXEDO.STAT_BC_IDX2 ANALYZED 1492 482727 29929074
Dès que je remets mes agrégations je repasse en TABLE ACCESS FULL :(
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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 TSTAT C, STAT L
WHERE to_char(C.date_stat,'yyyy/mm') = to_char(SYSDATE,'yyyy/mm')
AND to_char(L.date_stat,'yyyy/mm') = to_char(ADD_MONTHS(SYSDATE, -1),'yyyy/mm')
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 |
SELECT STATEMENT CHOOSE 1337915 34018300 4218269200
SORT(GROUP BY) 1337915 34018300 4218269200
HASH JOIN 11413 34018300 4218269200
TABLE ACCESS(FULL) TUXEDO.STAT_BC ANALYZED 1512 482727 29929074
TABLE ACCESS(FULL) TUXEDO.STAT_BC ANALYZED 1512 482727 29929074
:bug: