MySQL批量更新(下) -- 性能对比

MySQL批量更新(下) – 性能检测

前言

前面写了批量更新的上篇–四种实现方式,本节对他们的性能进行测试。
本次测试

  • 数据库隔离级别 READ-COMMITTED
  • 表总计40万行
  • 每次更新3000行

测试结果

方法一:CASE 指令 – 性能

  • 【消息】:执行成功,当前返回 [3000] 行,耗时 [386ms.]

方法二:Join Update – 性能

  • 【消息】:执行成功,当前返回 [3000] 行,耗时 [247ms.]


可以看出 join 的方式性能优于 case 

原理

通过explain 我们可以看出两种批量更新性能差距的背后原理:
方法一

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
方法一1UPDATEbase_slotrangePRIMARYPRIMARY8const3000100.00Using where
方法二1UPDATEaeq_refPRIMARYPRIMARY8b.id1100


其中 type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL  ,一般来说,得保证查询至少达到range级别,最好能达到ref。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值