Articles high-tech taggés "update"

Fil des billets - Fil des commentaires

Mettre à jour la même table via des requêtes SQL Update en parallèle sous SQL Server ?

Pour des raisons de performances, cette question est récurrente dans les projets à grande volumétrie. Sachant que le Update est l'une des opérations la plus coûteuse en SQL, il est préférable ne pas faire ce genre d'opérations.

Effectivement, la mise à jour d'une même table par des requêtes UPDATE en parallèle en SQL n'est pas optimisée. Il faut pour ce faire découper séquentiellement la table à grande volumétrie, le SELECT étant moins coûteux pour le SGBD. Ainsi si la table à parcourir est découpée en plusieurs "morceaux" de tailles plus petites, le parcours sera moins onéreux en ressources et donc plus rapide. Il en est de même pour un UPDATE avec une jointure sur une autre table, ce qui multiplie le...

Lire la suite

Comment effectuer un update à partir du même champs d'une autre ligne dans la même table en SQL Server ?

Pour mettre à jour un champs existant depuis un autre champs de la même table mais qui ne est identifié par une autre clef, une simple requête du type UPDATE MaTable SET MonChamps1 = 'Valeur' WHERE MonChampsClef = 'Ma clef' ne suffit pas. C'est à dire que pour mettre à jour le champs en SQL, il faut identifier le tuple contenant l'autre valeur et récupérer la valeur. Cet article montre comment mettre à jour un champs à partir de la valeur contenue dans une autre ligne, cette ligne étant identifiée par une clef composée.

Pour récupérer la valeur du champs nous pouvons utiliser une requête de ce type (testée sous SQL Server 2008) : UPDATE MaTable SET MonChamps = M2.MonChamps FROM MaTable , MaTable M2 WHERE MaTable.MonChampsClef = 'Une Clef' AND M2.MonChampsClef = 'Une autre Clef' AND MaTable.MonChampsDeJointure1 = M2.MonChampsDeJointure1 AND MaTable.MonChampsDeJointure2 = M2.MonChampsDeJointure2 Ainsi les alias de table ne sont pas acceptés dans la première déclaration de la table juste après le UPDATE ni dans la...

Lire la suite

Suivez le blog high-tech

  • Logo Twitter
  • Logo Facebook
  • Logo Youtube
  • Logo Fil RSS