Effiziente Upsert-Abfrage für die Aktualisierung doppelter Schlüssel
Beim Einfügen von Daten in eine MySQL-Tabelle mit einem eindeutigen Index ist es häufig erforderlich, einen vorhandenen zu aktualisieren notieren Sie, ob der Schlüssel bereits vorhanden ist. Um dies zu erreichen, wird normalerweise eine „ON DUPLICATE KEY UPDATE“-Klausel verwendet, die die zu ändernden Felder angibt. Allerdings kann die erneute Angabe aller Felder ineffizient sein.
Alternative Syntax
Ein einfacherer Ansatz ist die Verwendung der VALUES()-Funktion, wie unten gezeigt:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g);
Diese Syntax vermeidet die Notwendigkeit, jedes Feld zweimal anzugeben, wodurch die Abfrage komplexer wird prägnant.
Erwägen Sie, Aktualisierungen zu vermeiden
Es ist wichtig zu beachten, dass das Aktualisieren von Feldern mit denselben Werten, die sie bereits haben, nicht erforderlich ist. Wenn der vorhandene Datensatz bereits dieselben Daten wie die Einfügung enthält, ist keine Aktualisierung erforderlich. Die folgende Syntax kann verwendet werden, um unnötige Aktualisierungen zu verhindern:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;
Abrufen der letzten Einfügungs-ID
Um die ID des neu eingefügten oder aktualisierten Datensatzes zu erhalten, muss der Die Syntax hängt von der verwendeten Backend-App ab. In LuaSQL kann beispielsweise die Funktion conn:getlastautoid() verwendet werden, um den Wert abzurufen.
Das obige ist der detaillierte Inhalt vonWie kann ich Upserts in MySQL mit der Behandlung doppelter Schlüssel effizient durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!