To optimize row insertion into a MySQL table, you can leverage the supported syntax:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
However, if the number of rows to be inserted dynamically, using a PreparedStatement can be challenging.
To insert multiple rows dynamically using a PreparedStatement, you can create a batch using the addBatch() method and execute it with executeBatch().
Here's an example:
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. } } } }
This approach executes the batch every 1000 items, considering limitations in JDBC drivers or database batch length.
If using a PreparedStatement with batching is not feasible, alternative methods for inserting multiple rows include:
References:
The above is the detailed content of How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?. For more information, please follow other related articles on the PHP Chinese website!