ホームページ > Java > &#&チュートリアル > Java PreparedStatements を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?

Java PreparedStatements を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-01 01:59:14
オリジナル
361 人が閲覧しました

How Can I Efficiently Insert Multiple Rows into MySQL Using Java PreparedStatements?

PreparedStatement を使用した MySQL への複数の行の挿入

多くの場合、複数の行を一度にデータベースに挿入する必要があります。各行を反復処理して挿入ステートメントを実行する従来の方法は効率が悪い場合がありますが、MySQL では 1 つのクエリで複数の行を挿入できる構文を提供しています。

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
ログイン後にコピー

バッチ処理に PreparedStatements を使用する

Java と PreparedStatements を使用してこのプロセスを最適化するには、次のことを考慮してください。バッチ処理。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();
            }
        }
    }
}
ログイン後にコピー

バッチ実行最適化

バッチ処理は、JDBC ドライバーまたはデータベースの潜在的な制限を回避するために 1000 項目ごとに実行されます。

追加リソース

  • [ JDBC チュートリアル - 使用PreparedStatement](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
  • [JDBC チュートリアル - バッチ更新のためのステートメント オブジェクトの使用](https://docs.oracle .com/javase/tutorial/jdbc/basics/batchupdates.html)

以上がJava PreparedStatements を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート