Bonjour.
J'ai un petit souci avec une requete delete.
Je dois faire une mise à jour différentiel d'une base de donnée et pour cela on doit effacer un certain nombre d'enregistrement.
Seulement la on a une tres grosse mise à jour à faire et le delete est un vrai goulot d'etranglement.
J'essaye d'optimiser mon delete mais chaque essai à l'effet exactement inverse...
A l'origine chaque enregistrement à effacer avait "sa" ligne delete
de la forme "delete from *** where **=****" (à répéter 70.000 fois par exemple)
On a essayé de faire ca sous cette forme :
"delete from *** where **=**** or **=****" (avec 70.000 "or")
on a pas essayé le in mais a priori ca donne la meme chose que le or ?
On a essaye de gonfler les buffer de mysql, j'ai changer la valeur de optimizer_search_depth et à chaque fois... échec lamentable.
La j'avoue que je sais plus quoi faire...
Sur quel paramétre de mysql puis je jouer pour améliorer la vitesse de delete ?
est ce possible au moins ?
Pourquoi ma 2eme requete est plus lente que la 1er ? théoriquement envoyé une seule requete devrait etre plus efficace que d'en envoyer 70.000...
Je précise que l'on a beaucoup d'index mais "normalement" notre base est plus dédié à la lecture qu'à l'ecriture. Cette situation de mise à jour tres importante est completement exceptionnelle.
Si vous avez une piste je suis preneur.
Partager