Ich habe eine Client Java 7 App, die große Anzahl von kleinen Daten (einige Spalten) in die Datenbank einfügen muss. Datenbank (Mysql 5.6) befindet sich auf meinem Server. Clientseitige Java-App ruft die gespeicherte Prozedur in einer Schleife zum Einfügen einer einzelnen Zeile auf. Zeile ist einfach, sieht so aus:Mysql Einfügen mehrerer Zeilen mit einer einzigen Einfügung
int | int | varchar | varchar | int | Datetime
und die aktuelle Art, wie ich das zu tun habe, ist, wie dieser (Pseudocode):
try(DbConnection conn = new DbConnection()) {
for(RowModel model : rowModel) {
//inserting row here
}
}
catch(SqlException e) {
//process exception...
}
Wie Sie sehen, ich bin Verbindung einmal öffnen und i Zeile für Zeile einzufügen. "rowModel" kann Tausende von Zeilen haben und für mich sieht es so aus, als ob es sinnvoller wäre, 1 "LongText" an mysql stored procedure zu senden, die diesen Longtext irgendwie für einen einzelnen "insert" -Anruf geeignet macht.
Ist es möglich und wie? Was schlägst du vor?
Also, im Grunde, um Dinge zu summieren: 1) gibt es einen Vorteil beim Aufruf einer "einfügen" mit vielen Werten anstelle von "for-each" auf der Client-Seite? 2) Wie könnte ich meine gespeicherte Prozedur schreiben, so dass es 1 großen Text braucht und fügt es mit einzelnen "INSERT" -Befehl ein?
Sie können 'Einfügen in t (col1, col2) Werte (1,2), (3,4), (5,6)' oder schauen Sie in BULK Einfügung Tipps: http s: //dev.mysql.com/doc/refman/5.5/de/optimizing-innodb-bulk-data-loading.html –
Es gibt relevante Performance-Vorteile aufrufen auf Einfügen mit vielen Werten .. Sie führen nur einen Befehl anstelle von vielen Befehlen wie Ihre Zeilen .. – scaisEdge
@scaisEdge, die eine Antwort sein könnte, wenn Sie es unten setzen. Punkte Ruhm und Reichtum folgen. – Drew