Heim > Datenbank > MySQL-Tutorial > Wie kann ich Upserts in MySQL mit der Behandlung doppelter Schlüssel effizient durchführen?

Wie kann ich Upserts in MySQL mit der Behandlung doppelter Schlüssel effizient durchführen?

Susan Sarandon
Freigeben: 2024-12-08 13:41:11
Original
1012 Leute haben es durchsucht

How Can I Efficiently Perform Upserts in MySQL with Duplicate Key Handling?

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);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage