Mysql执行Update操作时会锁住表

 update tableA a,(select a.netbar_id,sum(a.reward_amt) reward_amt from  tableB a group by a.netbar_id) b set a.transfer_amt=b.reward_amt where a.netbar_id=b.netbar_id;

执行该语句时要注意,因为

select a.netbar_id,sum(a.reward_amt) reward_amt from  tableB a group by a.netbar_id

该临时表没有建索引,所以当记录比较多时,再执行update操作就会出现阻塞,因为执行update操作会锁表。

所以要改写成用脚本。

用脚本查询得到临时表,然后用循环把每条纪录的netbar_id取出来做为update的where条件,这样update执行的时间就会很短。

update与join的联合操作

UPDATE table A 
LEFT JOIN 
table B 
ON 
A.B_ID = B.B_ID 
SET 
A.A_NAME = B.B_NAME; 

 程序猿必读

原文地址:https://www.cnblogs.com/longzhongren/p/4625373.html