mysql批量更新

2021-09-02 11:59:25 字數 1097 閱讀 2524

mysql更新優化:

一版的更新的話都是採用update set的方式,但是如果需要批量更新的話,只能for迴圈的執行更新。或者採用executebatch的方式,執行更新。無論哪種方式,效能都不見得多好。

三千多條的更新,需要3分多鐘。

查詢了批量更新的優化,有說replace into的方式,即:

replace into tablename(id,status) values(id1,status1),(id2,status2),...,(idn,statusn)

這種方式,需要id是為主鍵。其更新方式是,執行更新的時候,發現id鍵存在的時候,先執行刪除,然後再進行插入,如果id鍵不存在,則執行插入。所以,執行更新的時候,發現除了id,status這兩個欄位外,其他欄位的值都為null。

所以這種方式不適合。

還有另外一種批量更新的方式:

insert into tablename(id,status) values(id1,status1),(id2,status2),...,(idn,statusn) on duplicate key update status=values(status)

這種方式與replace into的方式相似,也是需要id為主鍵,也是執行插入,在id存在的情況下,執行on duplicate key update 後面的更新,並不會刪除原來的記錄。

如果執行多個字段更新的話,就在on duplicate key update後面新增多個field=values(field),即:

insert into keywordtable(id, keyword, username, userid) values(1, '你好', 'eliot', 22), (2, 'hello', 'jhon', 23),   

(3, '嘻嘻', 'jim', 24) on duplicate key update keyword=values(keyword), username=values(username),userid=values(userid);

優化後,執行一萬多的資料更新,也僅耗時一點多秒

mysql 批量更新 MySQL批量更新

我有2個表 mysql data details accounts invoices 理想情況下,每個data details都應具有accounts invoices id.data details有乙個帶有accounts invoices主鍵的外來鍵 由於某種原因,有data details記...

mysql有則更新 批量 mysql 批量更新

private function parseupdate data,field,table sql update set keys array keys current data print r keys die foreach keys as column 如何用一條sql語句實現批量更新?mys...

mysql 批量更新

最近有用到mysql批量更新,使用最原始的批量update發現效能很差,將網上看到的總結一下一共有以下三種辦法 1.批量update,一條記錄update一次,效能很差 update test tbl set dr 2 where id 1 2.replace into 或者insert into ...