mysql:更新多条记录,是用case when进行批量update好,还是一条一条update好?

update多条记录,乐观锁要根据版本号进行判断
更新多条记录,是用case when进行批量update好,还是一条一条update好?
哪个性能更好?
另外好像case when不能走索引,这样效率很低?

阅读 8.7k
3 个回答

首先,要知道这两种方法的利弊:

批量更新

  1. 请求次数少,效率高
  2. 会产生大事务,锁表时间长
  3. 会加大主从延迟时间

单条更新

  1. 请求次数多,效率不如批量高
  2. 小事务,锁表时间短
  3. 不会加大主从延迟时间

根据各自特点可以总结为,离线库或访问量低的数据库可选择批量更新,生产数据库选择逐条更新。

从单个请求上来说,一次请求肯定效率更高,但记录数不能太多, 否则长时间锁表,对其他请求变得不可用,整体可用性大为降低,用户体验变差

使用insert on duplicate更好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏