在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫/ mysql 數(shù)據(jù)存在則更新,不存在則插入,如何提高效率?

mysql 數(shù)據(jù)存在則更新,不存在則插入,如何提高效率?

現(xiàn)在需要根據(jù)一行數(shù)據(jù)先判斷是否在數(shù)據(jù)表中, 存在則更新, 不存在則插入,
但是當(dāng)有2000多行數(shù)據(jù)需要執(zhí)行這樣的業(yè)務(wù)邏輯時,我發(fā)現(xiàn)效率很低, 一開始比較快, 大概超過1000行后會逐漸降低速度, 目前的方案是 :
先根據(jù)條件查詢是否存在,不存在則插入, 存在則更新, 這樣一條數(shù)據(jù)需要執(zhí)行兩條sql, 并且不能批量插入.這樣一條條執(zhí)行的效率極低.
我的優(yōu)化方案是,

  1. 使用 ON DUPLICATE KEY 來讓mysql自行解決該邏輯.
  2. 使用 replace 來解決.

但是這兩種方法都是mysql本身的特性, 想請教大家是否有什么更好的方案來提高這樣的執(zhí)行效率?

回答
編輯回答
亮瞎她

幾千條數(shù)據(jù),效率不會太差吧,注意把比較是否存在的字段加上索引就行了。

如果確實數(shù)據(jù)量大(最少也幾十萬級別),可以考慮用批量加載的方式先插入到臨時表,然后用sql語句做后續(xù)的更新或插入操作。

2018年2月18日 09:55
編輯回答
臭榴蓮

效率問題需要由唯一鍵方式來解決,既提高了效率,又避免重復(fù)。其他幾種方式如不加索引數(shù)據(jù)量大時也同樣存在效率問題。

2017年1月14日 22:15