1

100,000 のような大量の行を更新する必要があります。おそらく、1 つのクエリはサーバーにとって重すぎるでしょう。

アップデートを分割する最良の方法は何ですか? 200 行を更新し、1 秒スリープしてから、さらに 200 行を更新するようなものです。

編集:

さて、1回のクエリで大丈夫だという回答が得られました。しかし、それでも私はこれを行う方法を知りたいです。1,000,000 行以上あるとします。クエリを分割する最良の方法は何ですか?

4

2 に答える 2

2

あなたが教えてくれなかった制約がない限り、すべてを 1 つのクエリで更新することが最善の解決策です。

サーバーが過負荷になっているために物を分割することを考えても、実際には役に立たないようです。あなた自身の解決策と数字について考えてみてください。100 万のデータセットがあり、一度に 200 を更新しようとしてから 1 秒間スリープすると、最終的に 5000 回の更新を実行し、サーバーがこのタスクを完了するまでに 83.3 分かかります (所要時間はカウントされません)。クエリを実行します。これは非常に速い場合があります。

基本的に、データベース内のすべての ID を把握または選択し、UPDATE で適切な WHERE 句を使用して、それぞれの ID またはグループに対してクエリを送信します。

シナリオについて詳しく知らない限り、この質問には答えられません。非常に個々の使用パターンに合わせて最適化するものであり、どこにでも適用できるソリューションはありません。

于 2012-10-31T21:41:30.760 に答える
0

Limit と ORDER BY last_updated_time ASC の組み合わせを使用します...

何か...

UPDATE table SET ..... ORDER BY last_updated_time ASC LIMIT 5000

通常、5000回の更新はそれほど重くはありません..1000に設定したい場合..

于 2012-10-31T21:27:08.963 に答える