Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL-INSERT-Abfragen mit „ON DUPLICATE KEY UPDATE' optimieren?

Wie kann ich MySQL-INSERT-Abfragen mit „ON DUPLICATE KEY UPDATE' optimieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 01:23:10293Durchsuche

How Can I Optimize MySQL INSERT Queries Using

INSERT-Abfragen mit „ON DUPLICATE KEY UPDATE“ optimieren

Das MySQL-Datenbanksystem stellt die Klausel „ON DUPLICATE KEY UPDATE“ zur Handhabung von Szenarien bereit Dabei löst der Versuch, einen Datensatz mit einem doppelten Primärschlüssel einzufügen, einen Aktualisierungsvorgang aus. In diesem Artikel wird untersucht, wie Sie diese Klausel nutzen können, um effiziente und präzise Aktualisierungen zu erzielen.

Standard-INSERT mit vollständiger Feldspezifikation

Beim Versuch, einen Datensatz mit einem doppelten Schlüssel einzufügen, Sie könnten darauf zurückgreifen, alle Feldwerte in der Klausel „ON DUPLICATE KEY UPDATE“ anzugeben:

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=2, b=3, c=4, d=5, e=6, f=7, g=8;

Während dieser Ansatz sicherstellt, dass alle Felder korrekt aktualisiert werden, ist eine redundante Angabe von Werten erforderlich, die bereits in der ersten Einfügung bereitgestellt wurden.

Feldwerte aus der INSERT-Anweisung verwenden

Um Redundanz zu vermeiden, können Sie Folgendes tun Nutzen Sie die Syntax „VALUES()“ in der Klausel „ON DUPLICATE KEY UPDATE“:

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 verweist auf Originalwerte aus der Einfügeanweisung, sodass sie nicht erneut angegeben werden müssen.

Überlegungen zu redundanten Aktualisierungen und LAST_INSERT_ID

Es ist wichtig zu beachten, dass, wenn die vorhandenen Feldwerte mit den übereinstimmen Bei neuen Versionen führt MySQL keine Updates durch. Daher ist es wichtig zu prüfen, ob tatsächlich alle Felder in der „ON DUPLICATE KEY UPDATE“-Klausel angegeben werden müssen.

Darüber hinaus kann das Abrufen der von LAST_INSERT_ID() generierten ID je nach Backend zusätzliche Bearbeitung erfordern welche Anwendung oder Middleware Sie verwenden. In bestimmten Fällen müssen Sie möglicherweise die Datenbank separat abfragen, um die zuletzt eingegebene ID zu erhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-INSERT-Abfragen mit „ON DUPLICATE KEY UPDATE' optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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