MySQL 千万级表如何快速对每条记录做更新?

背景:
给订单表新增了一个字段:抽佣金额,
现在需要补充数据进去。
计算方式: 抽佣金额 = 订单金额 x 餐厅抽成比例(在餐厅表中) .

问:如何快速的补充完这些订单数据?

方案一,最直接的做法就是 循环批量更新吧
想请教方案二,三,四…

最佳答案

UPDATE order set commission = price * (SELECT commission_pro FROM restaurant where id = order.r_id) where id = order.id

2年前 评论
Darwin (楼主) 2年前
讨论数量: 13

UPDATE order set commission = price * (SELECT commission_pro FROM restaurant where id = order.r_id) where id = order.id

2年前 评论
Darwin (楼主) 2年前

UPDATE order set commission = price * (SELECT commission_pro FROM restaurant where id = order.r_id) where id = order.id

2年前 评论
Darwin (楼主) 2年前

千万级别的表是如何增加字段的

2年前 评论
Darwin (楼主) 2年前
php_yt (作者) 2年前
Darwin (楼主) 2年前

连表更新 update t1 join 餐厅表 b on 条件 set 抽成金额 = t1.订单金额 * b.餐厅抽成比例

2年前 评论

复制一张表,加事件,更新老数据,然后切表

2年前 评论
Darwin (楼主) 2年前

千万级别 mysql 的话,不要嵌套,不要 join,只 update,问题不大。

2年前 评论

循环处理对业务影响较小 上图update搞不好就是一例安全事故

2年前 评论
Darwin (楼主) 2年前
Mr_Guo (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!