mysql update 走索引_MySQL update操作使用到了索引但还会锁全表

本文通过实例分析了MySQL 5.7中update操作在使用索引时的情况。当WHERE条件涉及的索引扫描行数超过全表的20%~30%,即使有二级索引,也会进行全表扫描并锁定全表。测试结果显示,当条件如`c2 >= 7`时,仅锁定部分行;而条件如`c2 >= 6`时,则会升级为全表扫描并导致其他事务被阻塞。
摘要由CSDN通过智能技术生成

参考文章:

看了叶师傅的一片文章,在执行 UPDATE时,WHERE条件列有索引,但是还是会表所,根据文章做一下测试,记录如下

MySQL版本

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.7.4-m14 |

+-----------+

1 row in set (0.00 sec)

测试表 t1

mysql> CREATE TABLE `t1` (

-> `c1` int(10) unsigned NOT NULL DEFAULT '0',

-> `c2` int(10) unsigned NOT NULL DEFAULT '0',

-> `c3` int(10) unsigned NOT NULL DEFAULT '0',

-> `c4` int(10) unsigned NOT NULL DEFAULT '0',

-> PRIMARY KEY (`c1`),

-> KEY `c2` (`c2`)

-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.08 sec)

添加数据

mysql> insert t1 value(1,1,1,1),(2,2,2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值