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 :
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
Cette requête va mettre jusqu'à 40MN !!!!
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.