mysql 批量更新和单条更新(循环)

首先说结论:在条件字段都使用索引的情况下,批量更新的效率优于单条更新

注:

此结论没有考虑更新数据量的临界值,即没有考虑两种更新在达到哪个数据量级别的时候,会有明显的差异

我们项目中几百条数据以上的同时更新的话,使用了批量更新

我们知道mysql5.5 以后 默认使用的innodb,innodb是行级锁

优缺点对比:

批量更新:

优点:是速度快
缺点:当where条件字段,没有索引的情况下,可能会导致
表锁
,并且当字段的数据重复度过高的时候,也可能引发表锁

比如,更新where条件为性别,只有男女两种情况,当高并发情况出现的时候,就可能出现表锁,原因是mysql在解析sql 的时候,会忽略索引,因为它的mysql的优化器发现,即使使用了索引,还是要做全表扫描,所以放弃了索引,也就没有使用行锁,却使用了表锁

单条更新:
优点: 稳定,保证数据准确,并发量高
缺点: 速度慢

主键索引
也被称为聚簇索引,叶子节点存放的是整行数据; 而非主键索引被称为二级索引,叶子节点存放的是主键的值.
如果根据主键查询, 只需要搜索ID这颗B+树
而如果通过非主键索引查询, 需要先搜索k索引树, 找到对应的主键, 然后再到ID索引树搜索一次, 这个过程叫做回表.
也就是说, 非主键索引的查询需要多扫描一颗索引树, 效率相对更低.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值