Bonjour j'ai un comportement qui m'étonne (mais qui est peut-être normal) dans ma base.

Je suis en train de faire tourner un traitement mensuel qui delete puis insère OU update des lignes en masse dans une table. Cad qu'il essaye d'updater, et si le nombre de lignes mises à jour = 0, il insère.

Je manipule environ 300 000 lignes, et dans le cas actuel j'efface environ 300 000 lignes (les anciennes), j'insère 300 000 lignes (les nouvelles) et n'en update aucune (car aucune des nouvelles lignes n'existe dans les anciennes non effacées).

Je génère les inserts un par un et je commit tous les 10 000 inserts.

Ce qui m'étonne c'est que sous OEM, il m'affiche dans les opérations longues des sort Output assez longs (genre 6/7 mn).

Le plan d'exécution ne me parle que d'un INSERT STATEMENT avec un coût de 364, 398 855 lignes et 21 033 Ko.

Je n'avais jamais regardé de près ces traitements là, et je trouvais normal qu'il passe 20mn à insérer 300 000 lignes mais d'un seul coup je me pose un peu des questions...

Pour info la table dans laquelle il insère a environ 400 000 lignes (il en reste toujours un peu des fois précédentes en gros).

Il y a :
1 PK sur 4 champs
7 index (pour clés étrangères d'autres tables référençant celle là).
Pas de trigger

Si vous pouvez m'éclairer un peu (déjà savoir si c'est normal ou pas). Merci