Bonjour,
Je suis aujourd'hui confronté à des pb de temps de réponses sur certaines requetes, malgré la pose d'index, de tables en mémoire, etc...![]()
![]()
Voici le code d'une des requetes :
Cette requête va mettre jusqu'à 40MN !!!!
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
20
21
22
23
24
25
26
27
28
29 SELECT lower(SUPRALOCAL.REF), sum(decode(DO0.VAR13,'Gagnée',1,0)), XORGALIEN_Supra.ID_PC, sum(decode(DO0.ETAT,'Clôturée', 1,0)), sum(decode(DO0.ETAT,'En cours', 1,0)) FROM XORGALIEN XORGALIEN_Supra, DO0, SO0, AR0, AR0 SUPRALOCAL WHERE ( SO0.AR0_NRID=AR0.NRID ) AND ( SUPRALOCAL.NRID=AR0.AR0_SUPRA_NRID ) AND ( XORGALIEN_Supra.CODE_INSEE=SUPRALOCAL.CDE_TVA ) AND ( SO0.NRID=DO0.SO0_NRID ) AND ( SO0.TYPE='Particulier' ) AND ( DO0.DAT1 >= to_date('01/01/'||TO_CHAR(sysdate,'YYYY'),'DD/MM/YYYY') ) AND ( ( lower(SUPRALOCAL.CATEGORIE)='extension' ) AND ( SUPRALOCAL.nrid in (select ar0_supra_nrid from ar0 where ar0_supra_nrid is not null) ) AND trunc(DO0.DAT1) >= '01-07-2002 00:00:00' AND SO0.TYPE = 'Particulier' ) GROUP BY lower(SUPRALOCAL.REF), XORGALIEN_Supra.ID_PC![]()
Voici pour info l'explain PLAN :
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
20 SELECT STATEMENT Optimizer Mode=CHOOSE 1 10835 SORT GROUP BY 1 114 10835 NESTED LOOPS 1 114 10821 HASH JOIN 1 106 10817 NESTED LOOPS 19 1 K 10021 NESTED LOOPS 1 K 87 K 7497 NESTED LOOPS 1 K 73 K 4973 TABLE ACCESS FULL DO0 1 K 37 K 2445 TABLE ACCESS BY INDEX ROWID SO0 23 M 671 M 2 INDEX UNIQUE SCAN PK_SO0 23 M 1 TABLE ACCESS BY INDEX ROWID AR0 26 M 280 M 2 INDEX UNIQUE SCAN PK_AR0 26 M 1 TABLE ACCESS BY INDEX ROWID AR0 26 K 855 K 2 INDEX UNIQUE SCAN PK_AR0 26 K 1 VIEW VW_NSO_1 18 K 36 K 795 SORT UNIQUE 18 K 36 K 795 INDEX FAST FULL SCAN IDX_AR0_AR0_SUPRA_NRID 396 K 774 K 124 TABLE ACCESS BY INDEX ROWID XORGALIEN 36 K 285 K 4 INDEX RANGE SCAN SEL_XORGALIEN 36 K 2
En résumé, la requête passe par les index (pour les grosses tables 31M de lignes), et fait des Full Scan sur de petites tables.
Comment puis je optimiser cette requête ?
merci d'avance pour vos solutions.
Partager