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

闻先后,术专攻
三人有师
习得文武艺,货与帝王家
人性不曾变,资本永无眠

-----------花有重开日,人无再少年-----------

  分类目录

  monitor(TD)

不放弃

不怕万人阻挡,只怕自己投降。

人家的时间都用在了努力,而你的时间却用在了选择,当你将放弃当作一种习惯,你一辈子也不会有出息。

知其所以然

鲜衣怒马,绝代风华。 we are the world

Je le sais continue c'est pas bon,A la fin tu restes pas longtemps