Effizientes Upsert von MySQL: INSERT ... ON DUPLICATE KEY UPDATE
MySQL sieht sich häufig mit Szenarios konfrontiert, die das Einfügen einer neuen Zeile oder das Aktualisieren einer vorhandenen Zeile basierend auf dem Vorhandensein eines Schlüssels erfordern. Dieser kombinierte Vorgang, bekannt als Upsert (oder Merge), wird in MySQL elegant mit einer einzigen Anweisung gehandhabt.
Nutzung von INSERT ... ON DUPLICATE KEY UPDATE
Anstelle mehrerer Abfragen optimiert die INSERT ... ON DUPLICATE KEY UPDATE
-Anweisung von MySQL diesen Prozess. Die Syntax ist unkompliziert:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (`value1`, `value2`, ...) ON DUPLICATE KEY UPDATE `column1` = `value1`, `column2` = `value2`, ...</code>
Praktische Anwendung: Nutzungszählungen erhöhen
Stellen Sie sich eine usage
-Tabelle mit den Spalten thing_id
, times_used
und first_time_used
vor. Das Ziel besteht darin, times_used
für ein gegebenes thing_id
zu erhöhen, wenn die Zeile vorhanden ist; Andernfalls fügen Sie eine neue Zeile ein.
Diese Aufgabe lässt sich ganz einfach mit INSERT ... ON DUPLICATE KEY UPDATE
:
<code class="language-sql">INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1</code>
Diese Abfrage behandelt beide Szenarien intelligent: Wenn thing_id
4815162342 vorhanden ist, wird times_used
inkrementiert; andernfalls wird eine neue Zeile mit den angegebenen Werten hinzugefügt. Dies zeigt die Effizienz und Prägnanz der Upsert-Funktionalität von MySQL.
Das obige ist der detaillierte Inhalt vonWie kann MySQLs INSERT ... ON DUPLICATE KEY UPDATE Einfügungen und Aktualisierungen effizient verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!