複数のレコードを更新するときに、ループ内で単純なSQLの更新文を常に使用しています。つまり、SQLは高速ですが、データベースは複数の時間に接続されています。 最近、ループを使用して複数の更新を行うSQL文を構築する方がはるかに優れているのだろうかと疑問に思っています。は、PHP/MySqlでsqlやwhileループを構築する方が良いです。
大きな違いがありますか? PHP 5.6 & MySqlを使用しています。
ありがとうございます。
複数のレコードを更新するときに、ループ内で単純なSQLの更新文を常に使用しています。つまり、SQLは高速ですが、データベースは複数の時間に接続されています。 最近、ループを使用して複数の更新を行うSQL文を構築する方がはるかに優れているのだろうかと疑問に思っています。は、PHP/MySqlでsqlやwhileループを構築する方が良いです。
大きな違いがありますか? PHP 5.6 & MySqlを使用しています。
ありがとうございます。
最高の解決策は、ループを完全に回避することです。
ループを絶対に使用する必要がある場合は、PHP /データベース通信に関連するオーバーヘッドがなくなるため、データベース側で行うほうがよいでしょう。 Optimizing UPDATE Statementsの下で文書化されたよう
:
速いアップデートを取得する別の方法は、更新を遅らせて、後で行の多くの更新を行うことです。複数の更新を一緒に実行するのは、テーブルをロックすると一度に1つずつ行うよりはるかに迅速です。
また、Optimizing INSERT Statementsのページが有益で有益であることがあります。
最も一般的な用語では、要約すると:一度接続すると、単一のUPDATE
文を送信することは、一度接続すると、複数のUPDATE
文を送信するよりも優れている、順番に各接続で単一UPDATE
の文を送信するために複数回接続するよりも優れています。
これを超えると、さらに最適化するために活用できる技術がいくつかありますが、具体的な構成と要件を把握しておく必要があります。
は、実行する必要がある更新の種類によって異なります。質問を編集し、実際のケースを追加します – scaisEdge