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】

Replicate
-----------Complicate
--------------------------Appreciate
----------------------------------------[Fate]
-----------------------------------------------Elevate

三人行 有吾师

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

  分类目录

  monitor(TD)

往前一步是黄昏,退后一步是人生

渡口边最后一面洒下了句点,与你若只如初见 何须感伤离别

生活远没有咖啡那么苦涩,关键是喝它的人怎么品味!每个人都喜欢和向往随心所欲的生活,殊不知随心所欲根本不是生活。

如果错过了太阳时你流泪了,那么你也要错过群星了。

不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

我不明白为什么要那么在意别人的看法,评头论足只是无聊人的消遣,何必看得如临大敌。如果你不吃别人家的饭,就别太把别人的话放在心上。