Optimizing Multiple Row Insertion in MySQL with Java Using PreparedStatement
In database programming, inserting multiple rows into a table efficiently is crucial for performance. This article addresses how to optimize multiple row insertion in MySQL using Java's PreparedStatement.
Background
Previously, a simple loop was used to insert rows one at a time, which could be inefficient. To improve performance, we aim to utilize MySQL's supported syntax that allows inserting multiple rows in a single statement.
Using PreparedStatement Batching
MySQL offers batching as a way to execute multiple statements as a group. With PreparedStatement, we can achieve this by adding individual row data to a batch using the addBatch() method. Once the batch is complete or reaches a specific size limit, we can execute the entire batch using executeBatch().
Below is an example of batching with PreparedStatement:
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. } } } }
Batching improves performance by reducing round trips to the database and enabling the server to execute multiple statements efficiently.
Additional Resources
For further information on JDBC batching:
The above is the detailed content of How Can I Optimize Multiple Row Insertions in MySQL Using Java\'s PreparedStatement?. For more information, please follow other related articles on the PHP Chinese website!