Bonjour,
J'ai un problème de performance concernant la suppression de masse.
Il existe déjà un fil de discussion : http://www.developpez.net/forums/sho...d.php?t=218129
Je suis en 9i mais je vais bientôt passer en 10g.
J'ai environ 3'500'000 enregistrements à supprimer.
Je ne peux pas faire de partition et recréer la table serait beaucoup trop couteux.
Ma requête dépasse allègrement les 2 heures ?? (elle n'est pas terminée)
Existe-il un moyen de delete sans utiliser les roolbacks segments ou une autre astuce comme un truncate par exemple ?
Exemple avec 2'000'000
Explain plan du delete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 insert into TMP_BATCH_EXTRACTION (ID) (select ID from TARTICLE where etatobjet=1) delete from TARTICLE A where ID in (select B.ID from TMP_BATCH_EXTRACTION B)
ce que j'ai trouvé : http://www.dbasupport.com/oracle/ora...alData02.shtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop DELETE STATEMENT Optimizer Mode=CHOOSE 8 K 16446 DELETE HERMES_USER.TARTICLE NESTED LOOPS 8 K 1 M 16446 SORT UNIQUE TABLE ACCESS FULL HERMES_USER.TMP_BATCH_EXTRACTION 8 K 494 K 11 INDEX UNIQUE SCAN HERMES_USER.PK_TARTICLE 1 74 1
En vous remerciant
Boutss
Partager