Bonjour,
Voici l'explain plan d'une requête :
Comme vous pouvez le voir, il utilise presque partout des index, il n'y a que sur la table "DO_LOT_BON" qu'il fait un "ANALYZED (FULL)", est-il possible de diminuer le temps d'exécution de cette requête? Dans cette requête, je n'ai pas mis les colonnes que doit retourner le select, en effet ce select permet la création d'une vue.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 SELECT COUNT(*) FROM DO_LOT_DOSSIER DOS ,SE_CAS CAS ,DO_LOT_ENTETE ENT ,DO_LOT_BON BON ,INT_IDENT_ROLE IDROLE ,AS_PRODUIT PROD ,AS_PRODUIT PROD2 WHERE DOS.SE_CAS_ID = CAS.ID and BON.DO_LOT_ENT_ID = ENT.ID and BON.DO_LOT_ENT_ID = DOS.DO_LOT_ENT_ID and BON.SE_CAS_ID = DOS.SE_CAS_ID and BON.INT_TIDENT_CI = DOS.INT_TIDENT_CI and BON.INT_IDROLE_ID = DOS.INT_IDROLE_ID and IDROLE.ID = DOS.INT_IDROLE_ID and PROD.ID(+) = BON.AS_PROD_ID and PROD2.ID(+) = BON.AS_PROD_VEHI_ID call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 2 0.03 0.02 0 0 0 0 Execute 2 0.00 0.00 0 0 0 0 Fetch 4 4.18 4.66 8826 2475294 0 2 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 8 4.21 4.69 8826 2475294 0 2 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: 23 (IDINFO) Rows Row Source Operation ------- --------------------------------------------------- 1 SORT AGGREGATE 221227 NESTED LOOPS 221227 NESTED LOOPS 221227 NESTED LOOPS 221244 NESTED LOOPS OUTER 221244 NESTED LOOPS OUTER 221244 NESTED LOOPS 221244 TABLE ACCESS FULL DO_LOT_BON 221244 INDEX UNIQUE SCAN DO_LOT_ENT_PK (object id 7773) 221205 INDEX UNIQUE SCAN AS_PROD_PK (object id 6579) 125737 INDEX UNIQUE SCAN AS_PROD_PK (object id 6579) 221227 INDEX UNIQUE SCAN DO_LOTDOSS_UK (object id 7771) 221227 INDEX UNIQUE SCAN INT_IDROLE_PK (object id 8154) 221227 INDEX UNIQUE SCAN SE_INTERV_PK (object id 9027) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: CHOOSE 1 SORT (AGGREGATE) 221227 NESTED LOOPS 221227 NESTED LOOPS 221227 NESTED LOOPS 221244 NESTED LOOPS (OUTER) 221244 NESTED LOOPS (OUTER) 221244 NESTED LOOPS 221244 TABLE ACCESS GOAL: ANALYZED (FULL) OF 'DO_LOT_BON' 221244 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'DO_LOT_ENT_PK' (UNIQUE) 221205 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'AS_PROD_PK' (UNIQUE) 125737 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'AS_PROD_PK' (UNIQUE) 221227 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'DO_LOTDOSS_UK' (UNIQUE) 221227 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'INT_IDROLE_PK' (UNIQUE) 221227 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'SE_INTERV_PK' (UNIQUE)
Au niveau du nombre de ligne par table :
DO_LOT_BON : 247092
DO_LOT_ENTETE : 2636
DO_LOT_DOSSIER : 37568
SE_CAS : 18349
INT_IDENT_ROLE : 7246
AS_PRODUIT : 3822
Est-ce que l'ordre de déclaration de la clause FROM peut avoir une incidence sur les performances?
Merci d'avance pour vos conseils avisés.
Cédric
Partager