要最佳化MySQL表中的行插入,您可以利用支援的語法:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
但是,如果要動態插入的行數,使用PreparedStatement即可
要使用PreparedStatement動態插入多行,您可以使用addBatch()方法建立批次,並使用executeBatch()執行它。
這是一個範例:
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. } } } }
此方法每隔1000 個項目,考慮到 JDBC 驅動程式或資料庫批次長度的限制。
如果使用帶有批次的PreparedStatement 不可行,插入多行的替代方法包括:
參考:
以上是如何使用PreparedStatement有效率地將多行插入MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!