Oracle se plante complètement. Il fait une hash join dont le résultat fera 2 Giga. Evidement il n'aura pas la place de la caser en mémoire. Donc il utilise la sort_area_size et le temporary tablespace. Resultat la requête dure 25 minutes. Si je fais un ALTER SESSION SET HASH_JOIN_ENABLED=FALSE; la requête met 10 secondes.
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=CHOOSE 6 1130
HASH JOIN 37 M 2G 890
TABLE ACCESS FULL XXXXX 1 K 51 K 12
TABLE ACCESS FULL YYYYYY 43 K 1 M 877
Existe-t-il un paramètre pour eviter à l'optimizer de faire du HASH JOIN quand il en a pas les moyens ?
Existe-t-il un HINT pour eviter le l'optimizer de faire du HASH JOIN ?
Mes paramètres init.ora sont :
SORT_AREA_SIZE = 10 Mo
HASH_JOIN_AREA_SIZE = 20 Mo
HASH_JOIN_ENABLED=TRUE
Partager