100,000 のような大量の行を更新する必要があります。おそらく、1 つのクエリはサーバーにとって重すぎるでしょう。
アップデートを分割する最良の方法は何ですか? 200 行を更新し、1 秒スリープしてから、さらに 200 行を更新するようなものです。
編集:
さて、1回のクエリで大丈夫だという回答が得られました。しかし、それでも私はこれを行う方法を知りたいです。1,000,000 行以上あるとします。クエリを分割する最良の方法は何ですか?
あなたが教えてくれなかった制約がない限り、すべてを 1 つのクエリで更新することが最善の解決策です。
サーバーが過負荷になっているために物を分割することを考えても、実際には役に立たないようです。あなた自身の解決策と数字について考えてみてください。100 万のデータセットがあり、一度に 200 を更新しようとしてから 1 秒間スリープすると、最終的に 5000 回の更新を実行し、サーバーがこのタスクを完了するまでに 83.3 分かかります (所要時間はカウントされません)。クエリを実行します。これは非常に速い場合があります。
基本的に、データベース内のすべての ID を把握または選択し、UPDATE で適切な WHERE 句を使用して、それぞれの ID またはグループに対してクエリを送信します。
シナリオについて詳しく知らない限り、この質問には答えられません。非常に個々の使用パターンに合わせて最適化するものであり、どこにでも適用できるソリューションはありません。
Limit と ORDER BY last_updated_time ASC の組み合わせを使用します...
何か...
UPDATE table SET ..... ORDER BY last_updated_time ASC LIMIT 5000
通常、5000回の更新はそれほど重くはありません..1000に設定したい場合..