1

パフォーマンス関連:

1000行を挿入するには、1000回のクエリを作成する方が良いですか?

    for($i=1;$i<=1000;++$i){
         $query = 'insert into table1 (First,Last) values ("Fred","Smith")';
         mysql_query($query);
    }

または、PHP を使用して (for ループで値を連結して) クエリを作成するには、次のようにします。

   $query = ' insert into table1 (First,Last) values ("Fred","Smith"),
      ("John","Smith"),
      ...
      ("Michael","Smith"),
      ("Robert","Smith")';
   mysql_query($query);

多くの値が存在する可能性があるため、一度に 10 を挿入することにしました。大丈夫かどうかわかりませんが、この場合のベストプラクティスは何ですか?

4

4 に答える 4

6

2番目の方が良いです。データベースへの接続にはコストがかかります。

別の言い方をすれば、何が速いのでしょうか。1,000箱を降ろすために1,000回の旅行をしますか、それとも1,000箱を降ろすために1回の旅行をしますか?

于 2013-02-02T20:47:23.027 に答える
3

この質問は、公式サイトで十分に答えられていると思います。

同じクライアントから同時に多数の行を挿入する場合は、複数のVALUESリストを含むINSERTステートメントを使用して、一度に複数の行を挿入します。これは、個別の単一行のINSERTステートメントを使用するよりもかなり高速です(場合によっては何倍も高速です)。

ただし、マルチインサートを最適化するためのいくつかの戦略がリストされているため、ページ全体をお勧めします(さまざまなタイプのエンジン用)。しかし、最後にそれはそれを述べています...

INSERTは、今概説した戦略を使用している場合でも、LOADDATAINFILEよりもデータのロードにはるかに時間がかかります。

...そしてそれは非常に真実です。DBにロードするデータの巨大な(しかし静的な)セットが必要な場合は、代わりにLOADDATAINFILEステートメントを使用してください。

于 2013-02-02T20:49:47.410 に答える
0

2番目はより良いものであり、あなたはそれを多く制御できます、最初のuは異なる値を挿入しようとして多くの制御を持っていません

于 2013-02-02T20:48:14.523 に答える
0

そのシンプルなバッチ処理のコストは、1 つずつ処理するよりも少なくなります。コストのオーバーヘッドがすべてです。ここでは、パフォーマンスに関するリソースです。

于 2013-02-02T20:51:28.227 に答える