mysql in 无法使用到条件的索引

update z_laws_property set xljb = '地方司法解释/文件' , xljbno = 8 where xljbno in (119,120,121,122);
受影响的行: 800203
时间: 52.214s

[SQL]

update z_laws_property set xljb = '部门规章、地方政府规章' , xljbno = 7 where xljbno in (115,117,116,118);
受影响的行: 254639
时间: 32.925s

全表数量114万左右

当 in 的结果数量约大于一半 80 W 走了 主键索引 扫描条数接近全表企业微信截图_15671556627651.png

当 in 的结果数量较小时 走的是 自建的 索引 企业微信截图_15671556882760.png

解决方式: 全用=

原因 MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。根据当前的数据更新语句(update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';),该条件字段cycore_file_id并没有添加索引,所以导致数据表被锁。

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!

  Previous post 实用工具网站
Next post   三次握手 杂谈

  关于博主【WANG-FEiHU】

Duplicate
-----------Complicate
--------------------------Appreciate
----------------------------------------[Fate]
-----------------------------------------------Elevate

三人行 有吾师

-------------花有重开日 梦无止境时-------------

  分类目录

  monitor(TD)

青春就是用来追忆的,当你怀揣着它时,它一文不值,只有将它耗尽后,再回过头看,一切才有了意义,爱过我们的人和伤害过我们的人,都是我们青春存在的意义。

在这有限的时间里,我们应该珍惜生命,珍惜机会,更要珍惜那得之不易的时间。因那滴答做响的时间脚步,一旦走过,再不回头。

要打败任何事情得先学会打败自己。

我会把每一次改变当做成长,哪怕是痛也值得。

时无英雄,使竖子成名

少年不识愁滋味,爱上层楼。爱上层楼。为赋新词强说愁。而今识尽愁滋味,欲说还休。欲说还休。却道天凉好个秋。