
Envoyé par
Puiss51
Faut il que je teste 1 par 1 les paramètres pour ne faire un update que si le paramètre diffère?
Faut il faire "bêtement" un UPDATE sur l'ensemble du tupple même si un seul paramètre a été modifié?
Qu'on mette à jour une colonne ou plusieurs c'est le même travail de mise à jour pour la ligne de la table.
Un petit début de preuve de ce comportement est la logique d'un Trigger : les tables inserted et deleted ont le même nombre de colonnes que la table mise à jour (et non pas un nombre de colonnes différents selon les colonnes présentent dans l'ordre UPDATE)
Les mises à jour par les mêmes valeurs ne sont pas faites, les index ne sont pas mis à jour.
Donc la mise à jour de l'ensemble de la ligne n'est pas contre performant.
C'est plus long à écrire.
En cas de capture des requête (profiler) on ne saura pas dire pourquoi exactement l'update a été fait.
Si on chipote, du point de vue réseau, le volume "montant" des requêtes SQL sera plus lourd.

Envoyé par
Puiss51
Faut il systématiquement faire un enregistrement du moindre paramètre changé dans la bdd?
Ben si tu veux pouvoir le relire, comment faire autrement ?
Remarque par rapport au titre : "INSERT et UPDATE multiples"
Par contre le fait de faire un INSERT "à vide" et de compléter la ligne par une série d'UPDATE peut avoir une incidence sur le stockage.
Si on peut éviter, c'est mieux.
Que se passe t'il ?
Les lignes sont stockées dans une page de 8192 octets dont 8060 pour les données.
Imaginons que l'insert "à vide" occupe 10 octets.
Imaginons que la table soit indexée cluster (c'est la norme sous SQL server)
On peut donc théoriquement insérer 806 lignes "à vide" par page.
Imaginons qu'on en insère plus de 1000 d'un coup ; on occupera plus d'1 page.
Maintenant si les lignes sont updatées en les faisant "grossir" par paliers de 10 octets jusqu'à atteindre 100 octets par ligne.
La contrainte de garder les lignes dans l'ordre (index cluster) + la limite par page => fragmentation d'index
La gestion de fragmentation des index rentre dans le cadre d'une tâche de maintenance.
Mais, si, on peut éviter de mettre le bordel, c'est mieux
Partager