2012-04-04 3 views
1

Javaでjdbcドライバを使用して複数の行をMySQLテーブルに挿入するwhileループを設定しようとしています。私はAでjava.sql.PreparedStatementを使用してこの文を設定することが、私は文の小さなビットを用意したいのですが、1行たい複数のPreparedStatementsをまとめて結合する

INSERT INTO table (column1, column2) VALUES (column1, column2), (column1, column2); 

:アイデアは、私はの線に沿って文で終わるということです主にエントリの数が動的になるため、これは1つの大きなクエリを作成する最善の方法のようです。

これは、別のチャンクが生成されるたびに小さな部分が一緒に「マージ」されることを必要とします。これらを一緒にマージするにはどうしたらいいですか?または、このアイデアを忘れて、すぐに何千ものINSERTステートメントを実行することをお勧めしますか?

は1 PreparedStatementを用意し、それをあなたが好きなだけを再利用するために、 パトリック

+1

バッチ更新を使用します。例については、[here](http://www.tutorialspot.com/jdbc/jdbc-batch-processing.htm)を参照してください。 –

答えて

1

これは、このループを実行して何千ものステートメントを実行する頻度に依存しますが、それはプリペアドステートメントとストアドプロシージャの正確な目的の1つです。クエリを実行ごとに再コンパイルする必要がないため、 1つ以上のループでクエリを実行すると、潜在的に大量のパフォーマンスが向上しますSQLステートメントの実行は、すべてのループ反復でコンパイルして実行する必要があります。

これらのゲインは、求めているように長いマルチ挿入に組み込まれた準備済みの文のパフォーマンスとまだ一致しない場合がありますが、コード作成が簡単になります。パフォーマンスが問題にならない限り、実行ループでの滞在をお勧めします。

+0

十分に公正で、私はそれがパフォーマンスに速度に影響するかもしれないと心配しましたが、これは事を明確にします。ご回答有難うございます。 – Patrickdev

1

ベターありがとう:

INSERT INTO(表)(column1の、column2の)VALUES(column1の、column2の)

+0

お返事ありがとうございます。 – Patrickdev

関連する問題