次の場合、実行が速いのはどれ?(私のプロジェクトでは適切なアプローチを決定する必要があります)
insert into table values (v1, v2, v3);
また
insert into table1 value (v1)
insert into table1 value (v2)
insert into table1 value (v3)
あなたの意見は何ですか?
私の意見ではありません。しかし、経験上、同じことを達成するために複数のクエリではなく 1 つのクエリで何かを実行する方が常に高速です。
バッチ処理を適切に使用している場合、大きな違いはありません。ただし、最初の方が高速です。
アプローチ 1 は、次の理由により、アプローチ 2 よりも高速です。
1. ネットワーク呼び出しが少ない 2. DB でのコンパイル/解析/計画の説明/ が少ない
よろしくアビ
あなたの構文は間違っていると思います。1 回の挿入で複数の行を挿入しようとしている場合、クエリは次のようになります。
INSERT INTO table1 VALUES (v1), (v2), (v3)
また、1 つのクエリで実行することは、(同じことを行う) 複数のクエリよりも常に高速です。
(v1、v2、v3) バージョンの方が高速ですが、ドライバーでこれを行う最善の方法に注意してください。Java では、単純なINSERT INTO table VALUES (?)
PreparedStatement を使用し、addBatch() を使用して、executeBatch() で実行される 1 つの大きなステートメントに結合します。
セクション 3.4 を参照してください: http://java.sun.com/developer/Books/JDBCTutorial/
rewriteBatchedStatements
また、Connector/J ドライバーでプロパティ
を有効にする必要があります: http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html
LOAD DATA INFILE
それがアプリケーションで機能する場合は、さらに高速になります。