Um das Einfügen von Zeilen in eine MySQL-Tabelle zu optimieren, können Sie die unterstützte Syntax nutzen:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Allerdings Wenn die Anzahl der einzufügenden Zeilen dynamisch ist, kann die Verwendung eines PreparedStatement eine Herausforderung darstellen.
Um mehrere Zeilen dynamisch mit einem PreparedStatement einzufügen, können Sie mit der Methode addBatch() einen Batch erstellen und ihn mitexecuteBatch() ausführen.
Hier ein Beispiel:
public void save(List<Entity> entities) throws SQLException { try ( Connection connection = database.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_INSERT); ) { int i = 0; for (Entity entity : entities) { statement.setString(1, entity.getSomeProperty()); // ... statement.addBatch(); i++; if (i % 1000 == 0 || i == entities.size()) { statement.executeBatch(); // Execute every 1000 items. } } } }
Bei diesem Ansatz wird der Batch alle 1000 Elemente ausgeführt, wobei Einschränkungen bei JDBC-Treibern oder Datenbankbatches berücksichtigt werden Länge.
Wenn die Verwendung eines PreparedStatement mit Stapelverarbeitung nicht möglich ist, umfassen alternative Methoden zum Einfügen mehrerer Zeilen:
Referenzen:
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von PreparedStatements effizient mehrere Zeilen in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!