In Java kann die Ausführung mehrerer SQL-Anweisungen in einem Batch über die Methoden PreparedStatement undexecuteBatch() erreicht werden. Aber wie können wir dasselbe mit dem Datenbank-/SQL-Paket von Go erreichen?
Das Datenbank-/SQL-Paket stellt eine Exec-Funktion bereit, die SQL-Anweisungen ausführen kann. Es wird jedoch nur ein einziger Satz von Argumenten benötigt. Um mehrere Anweisungen zu stapeln, können wir eine Variadic-Funktion verwenden und eine einzelne SQL-Anweisung erstellen, die alle einzelnen auszuführenden Anweisungen enthält.
Hier ist ein Beispiel:
func bulkInsert(unsavedRows []*ExampleRowStruct) error { var ( valueStrings []string valueArgs []interface{} ) for _, post := range unsavedRows { valueStrings = append(valueStrings, "(?, ?, ?)") valueArgs = append(valueArgs, post.Column1) valueArgs = append(valueArgs, post.Column2) valueArgs = append(valueArgs, post.Column3) } stmt := fmt.Sprintf( "INSERT INTO my_sample_table (column1, column2, column3) VALUES %s", strings.Join(valueStrings, ","), ) _, err := db.Exec(stmt, valueArgs...) return err }
Dieser Code erstellt eine einzelne SQL-Anweisung, die alle Zeilen in die Datenbank einfügt. Indem wir die einzelnen Anweisungsargumente (Werte) als variable Parameter übergeben, können wir mehrere Anweisungen in einem einzigen Netzwerk-Roundtrip ausführen. Tests haben gezeigt, dass dieser Ansatz deutlich schneller sein kann als die Verwendung der Begin-, Prepare- und Commit-Methoden zum Stapeln von SQL-Anweisungen.
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-Anweisungen mithilfe des Datenbank-/SQL-Pakets von Go effizient stapeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!