Bonjour,
Je tente de faire un DELETE massif de 82000 rows d'une table, sur un champ qui est INDEXE.
J'ai effectué plusieurs fois le même test, sur la même table, avec les mêmes données, pour être certain que la différence ne venait pas d'une charge différente de la machine à plusieurs moments, mais le résultat est toujours le même :
1) Via FORMS :
13:28:33 - del_imgext(253,OUI) BEGIN
13:29:23 - 82000 valeur image deleted
13:29:24 - 1 image deleted
13:29:24 - del_imgext(253,OUI) END
Donc environ 50 secondes...
2) Via PL/SQL sous Toad :
14:03:08
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BEGIN DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'hh24:mi:ss')); mgckgimgext.del_imgext (253, 'OUI'); DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'hh24:mi:ss')); END;
14:03:48
Soit environ 40 secondes...
3) DELETE Direct en PL/SQL sous Toad :
14:05:08
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 BEGIN DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'hh24:mi:ss')); DELETE FROM valeur_image WHERE idtimgext = 253; DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'hh24:mi:ss')); END;
14:05:49
Soit environ 40 secondes...
4) DELETE Direct en SQL sous Toad :
Environ 18 secondes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DELETE FROM valeur_image WHERE idtimgext = 253;
Donc 1 (50") > 2 (40") = 3 (40") > 4 (18")
On passe presque du simple au triple entre 1 et 4 ...
Si quelqu'un a une idée.... Moi je perds mon latin...
Merci!
Partager