MySQL Update: Warum sollten Zeilen die Änderung basierend auf der SET -Klausel übereinstimmen?

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe eine Update-Abfrage durchgeführt, die über eine große Anzahl von Tabellen teilnahm, die ein Feld aktualisiert haben, und es stimmte mit 29.000 Zeilen überein. Das Ausführen der gleichen Abfrage mit nur einer Ergänzung in der Set-Klausel erhöhte die übereinstimmenden Zeilen auf 118K-Zeilen. Es scheint, dass sich dies nur ändern sollte, wenn die Klausel bearbeitet wurde.

War es hilfreich?

Lösung

Ich glaube, ich habe es einfach herausgefunden ...

MySQL muss die Anzahl der Zeilen zählen, die aktualisiert werden, und nicht alle, die durch den Join, der während des Updates stattfindet, generiert werden. Der Unterschied besteht darin, dass, wenn es viele [b] bis eins [a] und viele [c] zu einem [b] gibt, die Anschlüsse von N ([c]) Zeilen erzeugen, aber das Aktualisieren von [b] würde nur n zählen (( [B]). Durch das Hinzufügen eines Satzes für [c] wird diese Zahl n ([b]) + n ([c]).

Da sich die Felder in der festgelegten Klausel in verschiedenen Tabellen befinden, wird die aktualisierte Nummer geändert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top