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; 

 程序猿必读


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM