PreparedStatement を使用した Java による MySQL での複数行挿入の最適化
データベース プログラミングでは、テーブルに複数の行を効率的に挿入することがパフォーマンスにとって重要です。この記事では、Java の PreparedStatement を使用して MySQL での複数行の挿入を最適化する方法について説明します。
Background
以前は、単純なループを使用して一度に 1 行ずつ行を挿入していました。非効率的になる可能性があります。パフォーマンスを向上させるために、単一のステートメントに複数の行を挿入できる MySQL でサポートされている構文を利用することを目指しています。
PreparedStatement のバッチ処理の使用
MySQL は、実行方法としてバッチ処理を提供します。複数のステートメントをグループとして。 PreparedStatement を使用すると、addBatch() メソッドを使用して個々の行データをバッチに追加することでこれを実現できます。バッチが完了するか、特定のサイズ制限に達したら、executeBatch() を使用してバッチ全体を実行できます。
以下は 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. } } } }
バッチ処理によりパフォーマンスが向上します。データベースへのラウンドトリップを減らし、サーバーが複数のステートメントを効率的に実行できるようにすることで、
追加リソース
JDBC バッチ処理の詳細:
以上がJava の PreparedStatement を使用して MySQL での複数行の挿入を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。