Bonjour à tous,

j'ai une requête qui est bcp trop lente, j'ai essayé de l'optimiser comme je pouvais, mais là je vois pas ce qui pose problème...
Voici la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       SELECT AN2.id_annonce,
           COUNT(id_image) AS nb_photo,
           SUM(SAC.resultat_r) as resultat_r,
           SUM(SAC.annonce_d) as annonce_d,
           SUM(SAC.annonce_sms + SAC.annonce_mail + SAC.mailagence_r) as other_stats
      FROM ANNONCE AN2, 
           ANNONCE_IMAGE AI, 
           STATISTIQUE_ANNONCE_COMBINE SAC
     WHERE AN2.id_annonce = AI.id_annonce(+)
       AND AN2.id_presto = '566066'
       AND AI.id_statut_annonce_image(+) > 0
       AND SAC.id_annonce = AN2.id_annonce
       AND SAC.date_statistique_annonce BETWEEN to_date('010408','ddmmyy') AND to_date('300408','ddmmyy')
     GROUP BY AN2.id_annonce
Voici le plan d'execution :

SELECT STATEMENT, GOAL = ALL_ROWS Cost=20858 Cardinality=1910 Bytes=345710
HASH GROUP BY Cost=20858 Cardinality=1910 Bytes=345710
FILTER
NESTED LOOPS OUTER Cost=20857 Cardinality=6403 Bytes=1158943
NESTED LOOPS Cost=10427 Cardinality=2326 Bytes=239578
TABLE ACCESS BY INDEX ROWID Object owner=PRESTO Object name=ANNONCE Cost=781 Cardinality=1910 Bytes=85950
INDEX RANGE SCAN Object owner=PRESTO Object name=I_ID_PRESTO_ANN Cost=9 Cardinality=1910
TABLE ACCESS BY INDEX ROWID Object owner=PRESTO Object name=STATISTIQUE_ANNONCE_COMBINE Cost=8 Cardinality=1 Bytes=58
INDEX RANGE SCAN Object owner=PRESTO Object name=IDX_ID_ANNONCE_COMBINE Cost=3 Cardinality=6
TABLE ACCESS BY INDEX ROWID Object owner=PRESTO Object name=ANNONCE_IMAGE Cost=5 Cardinality=3 Bytes=234
INDEX RANGE SCAN Object owner=PRESTO Object name=I_ANNONCE_IMAGE_ID_ANN Cost=3 Cardinality=4
Merci pour votre aide