1

次の場合、実行が速いのはどれ?(私のプロジェクトでは適切なアプローチを決定する必要があります)

insert into table values (v1, v2, v3);

また

insert into table1 value (v1)
insert into table1 value (v2)
insert into table1 value (v3)

あなたの意見は何ですか?

4

5 に答える 5

3

私の意見ではありません。しかし、経験上、同じことを達成するために複数のクエリではなく 1 つのクエリで何かを実行する方が常に高速です。

于 2012-04-18T14:43:43.160 に答える
1

バッチ処理を適切に使用している場合、大きな違いはありません。ただし、最初の方が高速です。

于 2012-04-18T14:43:37.730 に答える
0

アプローチ 1 は、次の理由により、アプローチ 2 よりも高速です。

1. ネットワーク呼び出しが少ない 2. DB でのコンパイル/解析/計画の説明/ が少ない

よろしくアビ

于 2012-04-18T14:46:49.273 に答える
0

あなたの構文は間違っていると思います。1 回の挿入で複数の行を挿入しようとしている場合、クエリは次のようになります。

INSERT INTO table1 VALUES (v1), (v2), (v3)

また、1 つのクエリで実行することは、(同じことを行う) 複数のクエリよりも常に高速です。

于 2012-04-18T14:47:05.090 に答える
0

(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それがアプリケーションで機能する場合は、さらに高速になります。

于 2012-04-19T02:53:36.460 に答える