1
lihongjie0209 2018-10-27 14:23:08 +08:00
update table set column=value+x where id in (xxx, xxx....)
试试这种 |
2
niubee1 2018-10-27 14:33:09 +08:00
放到 batch 里执行, 但是并不是 batch 里数量越多越好, 数量和你当前系统的配置有关, 你实验一下就好了
|
3
ppyybb 2018-10-27 15:10:56 +08:00 via iPhone
这个 x 是固定的还是和 id 有关系?我假设是前者。
方法 1 就是放到集合里面了,innodb 对判断在不在集合里面好像是二分,找数据的时候直接走的索引。 方法 2 可以在上面的基础上开多线程同时更新,但是注意对 id 做切分,使得各个线程的 id 的区间没有重合,防止因为 next-key 锁住(如果 id 本身就是唯一索引就不用了) 方法 3 假如 x 和 id 有关,那么使用 insert on duplicate 来更新,写个程序生成特定的 sql ; |
4
wvtjplh OP x 不是固定的,所以没法用 where id in (xxx, xxx....)
|
5
yc8332 2018-10-28 22:10:20 +08:00
就只有批量更新啊。。。不然就是多开进程啊。。
|