Mise à jour MySQL: pourquoi les lignes apparié changement en fonction de la clause set?

dba.stackexchange https://dba.stackexchange.com/questions/2963

  •  16-10-2019
  •  | 
  •  

Question

J'ai couru une requête de mise à jour se joindre à travers un grand nombre de tableaux qui met à jour un champ, et il correspondait 29k quelques impairs rangs. L'exécution de la même requête avec seulement un ajout dans la clause Set augmenté les lignes adaptées à 118K quelques impairs rangs. Il semble que cela ne devrait changer si la clause WHERE a été modifié.

Était-ce utile?

La solution

Je crois que je viens tout compris ...

MySQL doit compter le nombre de lignes qui seront mises à jour, tous ceux qui seront générés par la jointure qui se produit au cours de la mise à jour. La différence est que s'il y a beaucoup [B] pour un [A], et beaucoup [C] pour un [B], se joindre à tous créeraient n ([C]) lignes, mais la mise à jour [B] ne ferait que compter n ( [B]). L'ajout d'un ensemble de [C] a fait ce nombre n ([B]) + n ([C]).

Étant donné que les champs de la clause set sont sur des tables différentes, il modifie le nombre mis à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top