Die Frage ist über SQL
Legacy-Code für MySQL
Datenbank.Leistung von VALUES (col_name) -Funktion in der UPDATE-Klausel
Es ist bekannt, dass, wenn INSERT ... ON DUPLICATE KEY UPDATE
Anweisung VALUES(col_name)
Funktion can be used tun aus dem INSERT -Teil auf Spaltenwerte beziehen sich stattdessen gibt genaue Werte übergeben:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES(c)
viele große Einsätze in parametrisierte My Legacy-Code enthält Stil (sie in Batch-Einsätze verwendet werden):
INSERT INTO table (a,b,c, <...dozens of params...>) VALUES (?,?,?,<...dozens of values...>)
ON DUPLICATE KEY UPDATE b=?, c=?, <...dozens of params...>
Die Frage ist: es wäre Leistung von Batch-Einsätze erhöhen, wenn ich all diese Abfragen ändernzu verwendenFunktion (in UPDATE
Teil)?
Meine Abfragen werden von Java-Code mit jdbc
Treiber ausgeführt. Also, was ich denke, ist, dass für lange Textwerte die Größe der Abfragen erheblich reduziert werden sollte. Was ist mit MySQL
es selbst? Würde es mir im Allgemeinen eine höhere Geschwindigkeit geben?
Ja für lange Werte können Sie einen marginalen Vorteil erhalten, aber diese Art von Aufwand ist es kaum wert, es sei denn, Sie eine Menge Datensätze pro Minute einfügen – e4c5
Ich füge viele Datensätze in der Minute, in der Tat – Andremoniy
würde es dann vermuten Sei es wert, da die Veränderung nicht zu viel Zeit in Anspruch nimmt. – e4c5