[Tuning] jointure externe et fonction
re bonjour,
j'ai un autre probleme de performance avec la requête suivante.
Avec jointure classique, ça met 47ms ; avec jointure externe sur gra_dam, ça met 7 secondes.
Mais moi j'aimerai une jointure externe :roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
select
cdhop,
nuagt,
pgpmg.INFOS_GAGT.GET_CDGRA(agt.nuagt, '01', to_date( '12/07/2006', 'dd/mm/yyyy'), agt.CDCSA, agt.dtecsa) cdgra,
pgpmg.INFOS_GAGT.GET_DTEGRA dtegra,
gra.lbegra
from
gh.gagt agt,
gh.ggra gra,
pgpmg.grade_dam gra_dam
where
cdhop='01' and nuagt IN ('020320','020851','041587','019182') and
pgpmg.infos_gagt.GET_DTEE ( nuagt,'01', to_date('12/07/2006','dd/mm/yyyy')) is not NULL and
gra.cdgra = pgpmg.INFOS_GAGT.GET_CDGRA(agt.nuagt, '01', to_date( '12/07/2006', 'dd/mm/yyyy'), agt.cdgra, agt.dtegra) and
gra_dam.oid_thop(+) = 93339 and
gra_dam.oid_ggra(+) = gra.oid_ggra |
Ci dessous le plan d'execution avec jointure classique (47 millisecondes):
Code:
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
|
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Hint=RULE
CONCATENATION
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID GAGT
INDEX UNIQUE SCAN PKGAGT
INDEX RANGE SCAN AK0_GRADE_DAM
TABLE ACCESS BY INDEX ROWID GGRA
INDEX UNIQUE SCAN PK_GGRA
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID GAGT
INDEX UNIQUE SCAN PKGAGT
INDEX RANGE SCAN AK0_GRADE_DAM
TABLE ACCESS BY INDEX ROWID GGRA
INDEX UNIQUE SCAN PK_GGRA
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID GAGT
INDEX UNIQUE SCAN PKGAGT
INDEX RANGE SCAN AK0_GRADE_DAM
TABLE ACCESS BY INDEX ROWID GGRA
INDEX UNIQUE SCAN PK_GGRA
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID GAGT
INDEX UNIQUE SCAN PKGAGT
INDEX RANGE SCAN AK0_GRADE_DAM
TABLE ACCESS BY INDEX ROWID GGRA
INDEX UNIQUE SCAN PK_GGRA |
Ci dessous le plan d'execution avec jointure externe (7 secondes):
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Hint=RULE
NESTED LOOPS OUTER
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID GAGT
INDEX RANGE SCAN AK7GAGT
TABLE ACCESS BY INDEX ROWID GGRA
INDEX RANGE SCAN PKGGRA
INDEX UNIQUE SCAN AK0_GRADE_DAM |