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. } } } }
このアプローチでは、 JDBC ドライバーまたはデータベースのバッチ長の制限を考慮して、1000 項目ごとにバッチ処理します。
バッチ処理で PreparedStatement を使用できない場合、複数の行を挿入する代替方法は次のとおりです。
参照:
以上がPreparedStatements を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。