我需要更新表中的数千行。例如,我有 1000 行,id 为 - 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)
Note: 在这种情况下我实际上可以写SET value1=42, value2=111
但在现实世界的应用程序中,这组 id 并不相同,对于一行,我需要设置 value1,对于其他行,我需要设置 value2,对于行的某些子集,我需要设置两者。因此我需要两个查询。
问题是我有大量的 id。这个查询大约有 1Mb!
Q1:这是优化此更新的正确方法吗?
Q2: 发送这么大的查询是否正确?我可以通过将此查询分成几个较小的部分来获得更快的更新吗?
我不能使用where
声明,我的程序中有很多行 ID。