Bonjour,
J'ai une proc.stockée qui traite une table sur laquelle je souhaite supprimer des enregistrements si ils existent. Les index sont OK.
J'ai donc tenté un :
DELETE FROM tb WHERE Champ1=X AND Champ2=Y
Le problème, c'est si les lignes concernées n'existent pas dans la table, autrement dit un :
SELECT COUNT(*) FROM tb WHERE Champ1=X AND Champ2=Y
renvoie 0.
Dans ce cas là, le DELETE prend 3 fois plus de temps à s'executer que de tester si les lignes existent dans un IF.
Autrement dit, dans le cas ou des lignes existent, il sera plus rapide de faire un DELETE FROM direct . Dans le cas où les lignes n'existent pas, il sera plus rapide de faire un IF pour tester si les lignes existent, et comme ce n'est pas le cas, le temps passé sera juste celui du SELECT.
Voyez-vous une explication technique ? Et que me conseillez-vous sachant que les 2 cas ont environ autant de chances de se produire (lignes déjà présentes / lignes absentes).
Merci pour vos avis
Partager