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 走了 主键索引 扫描条数接近全表
当 in 的结果数量较小时 走的是 自建的 索引
解决方式: 全用=
原因 MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。根据当前的数据更新语句(update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f';),该条件字段cycore_file_id并没有添加索引,所以导致数据表被锁。
Tags : 本文未设置标签
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!