テーブルの何千もの行を更新する必要があります。たとえば、IDが-1、2..1000の1000行があります。
mytable:
| id | value1 | value2 |
| 1 | Null | Null |
| 2 | Null | Null |
...
| 1000 | Null | Null |
次に、最初の10行を変更する必要があります。私はこのようにそれを行うことができます:
UPDATE mytable SET value1=42, value2=111 WHERE id=1
...
UPDATE mytable SET value1=42, value2=111 WHERE id=10
これには多くのリクエストが必要であり、それほど高速ではないため、この最適化を行うことにしました。
UPDATE mytable SET value1=42 WHERE id in (1, 2, 3.. 10)
UPDATE mytable SET value2=111 WHERE id in (1, 2, 3.. 10)
注:この場合、実際に書き込むことはできますSET value1=42, value2=111
が、実際のアプリケーションでは、このIDのセットは同じではありません。1つの行に対してvalue1を設定し、他の-value2に対して、行のサブセットに対して両方を設定する必要があります。そのため、2つのクエリが必要です。
問題は、IDが非常に多いことです。このクエリは約1Mbです!
Q1:これはこの更新を最適化する正しい方法ですか?
Q2:非常に大きなクエリを送信するのは正しいですか?このクエリをいくつかの小さな部分に分割することで、より高速な更新を取得できますか?
ステートメントを使用できませんwhere
。プログラムに行IDがたくさんあります。