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