Aide sur Optimisation requête
Bonjour à tous,
je suis actuellement en train d'essayer d'optimiser une requête qui est plutôt lourde :
Code:
1 2 3 4 5 6
| SELECT AN.id_presto, BLG.id_logiciel, BLG.aan_id, TRUNC(BLG.blg_date, 'MM') as blg_date, count(*) as total
FROM T_BRIDGELOG_BLG BLG, ANNONCE AN
WHERE BLG.id_annonce = AN.id_annonce
AND BLG.id_logiciel > 0
AND TRUNC(blg_date, 'MM') in ( TRUNC(sysdate, 'MM'), TRUNC( ADD_MONTHS(SYSDATE, - 1 ) ) )
GROUP BY id_presto, id_logiciel, aan_id, TRUNC(BLG.blg_date, 'MM') |
Citation:
SELECT STATEMENT, GOAL = ALL_ROWS Cost=26541 Cardinality=12383 Bytes=1164002
HASH GROUP BY Cost=26541 Cardinality=12383 Bytes=1164002
NESTED LOOPS Cost=26270 Cardinality=12383 Bytes=1164002
TABLE ACCESS FULL Object owner=PRESTO Object name=T_BRIDGELOG_BLG Cost=1490 Cardinality=12383 Bytes=619150
TABLE ACCESS BY INDEX ROWID Object owner=PRESTO Object name=ANNONCE Cost=2 Cardinality=1 Bytes=44
INDEX UNIQUE SCAN Object owner=PRESTO Object name=PK_ANNONCE Cost=1 Cardinality=1
table ANNONCE environs 5 millions de lignes
table BLG = 830 000 lignes
Index en pk sur id_annonce
Index sur id_presto
Index sur trunc(blg_date)
Le temps d'execution est d'environs 40 sec.
1/ Comment puis-je l'optimiser ?
2/ Comment se lit le plan d'execution, où puis-je trouver une doc là dessus ?
Merci d'avance pour votre aide