我需要更新表中的数千行。例如,我有 1000 行 ids - 1, 2.. 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 是不一样的,对于一个行,我需要设置 value1,对于其他 - value2,对于一些行的子集,我需要同时设置两者。因此,我需要两个查询。
问题是我有大量的身份证。这个查询大约是 1Mb!
Q1:这是优化此更新的正确方法吗?
Q2:发送这么大的查询是否正确?我可以通过将此查询分成几个较小的部分来获得更快的更新吗?
我不能使用where
语句,我的程序中有很多行 ID。