1

Java の jdbc ドライバーを使用して、MySQL テーブルに複数の行を挿入する while ループを設定しようとしています。アイデアは、次の行に沿ったステートメントで終わるということです。

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

を使用してこのステートメントを設定したいのですjava.sql.PreparedStatementが、ステートメントの小さなビットを一度に 1 行ずつ準備したいと思います。これは主に、エントリの数が動的になるためです。クエリ。

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

ありがとう、パトリック

4

2 に答える 2

1

1 つの PreparedStatement を準備し、必要なだけ再利用することをお勧めします。

INSERT INTO (テーブル) (列 1、列 2) 値 (列 1、列 2)

于 2012-04-04T19:54:14.793 に答える
1

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

これらの利点は、あなたが求めているように、ループ内の長い複数挿入に組み込まれた準備済みステートメントのパフォーマンスとまだ一致しない場合がありますが、コーディングはより簡単になります。パフォーマンスに問題が生じない限り、実行ループを維持することをお勧めします。

于 2012-04-04T19:55:00.007 に答える