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

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

Barbara Streisand
リリース: 2024-11-26 13:44:10
オリジナル
849 人が閲覧しました

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

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

MySQL テーブルへの行の挿入を最適化するには、サポートされている構文を利用できます。

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

ただし、動的に挿入される行数の場合、PreparedStatement を使用すると、

AddBatch で 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 を使用できない場合、複数の行を挿入する代替方法は次のとおりです。

  • 潜在的なパフォーマンスを伴う各行の PreparedStatement の insert() メソッドの使用制限事項。
  • Statement オブジェクトを使用すると、複数の SQL ステートメントを一度に実行できます。

参照:

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

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

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