现在需要根据一行数据先判断是否在数据表中, 存在则更新, 不存在则插入,
但是当有2000多行数据需要执行这样的业务逻辑时,我发现效率很低, 一开始比较快, 大概超过1000行后会逐渐降低速度, 目前的方案是 :
先根据条件查询是否存在,不存在则插入, 存在则更新, 这样一条数据需要执行两条sql, 并且不能批量插入.这样一条条执行的效率极低.
我的优化方案是,
- 使用 ON DUPLICATE KEY 来让mysql自行解决该逻辑.
- 使用 replace 来解决.
但是这两种方法都是mysql本身的特性, 想请教大家是否有什么更好的方案来提高这样的执行效率?
效率问题需要由唯一键方式来解决,既提高了效率,又避免重复。其他几种方式如不加索引数据量大时也同样存在效率问题。