【MySQL插入更新重複值】ON DUPLICATE KEY UPDATE用法
阿新 • • 發佈:2018-11-26
要插入的資料 與表中記錄資料的 惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新
弊端:造成主鍵自增不連續。適合資料量不大的表。
ON DUPLICATE KEY UPDATE後面的條件
eg有如下表,僅主鍵存在UK(唯一)屬性:
select * from Student
id name age
1 jack 20
2 rose 21
insert into Student ( id,name) values (1,'jack') ON DUPLICATE KEY UPDATE name = 'tom',age=40;
select * from Student;
id name age
1 tom 40
2 rose 21
end
=======================================================================
個人記錄日記:
千萬條資料量,根據UK進行更新或插入,耗時較久,於是思考優化的思路:
1、在UK欄位建立索引(查明ON DUPLICATE KEY UPDATE是否用的到索引)
2、拆成根據UK欄位查詢,根據查詢結果判斷後再進行插入和更新操作。這裡耗時最大的操作是查詢操作,所以查詢仍需在UK欄位建立索引。
以及多執行緒下同步以上原子操作。
過程中好奇sql的執行過程,查了一下資料: