今天我又对如果利用索引避免锁表方面进行了测试对于索引的间隙锁,本以为锁定的是索引键值的范围,即满足最小键值至最大键值的记录被锁定比如我对表中的user_id加索引,修改user_id >=1 and user_id <=3的记录; 或者user_id IN (1,3)
本以为是对user_id为2的记录会上锁,对user_id为4的记录便不会上锁。但实际发现貌似这样的语句不能利用索引,引起了全表锁定,不知道我的理解是否正确?
本以为是对user_id为2的记录会上锁,对user_id为4的记录便不会上锁。但实际发现貌似这样的语句不能利用索引,引起了全表锁定,不知道我的理解是否正确?
你mysql的存储引擎是myisam还是innodb呢?
show create table
show create table
IN语法,实际上内部操作是一个个的等于,
select * from a where id in(1,2,3,4)
==>
select * from a where id=1
union all
select * from a where id=2
union all
.......................这样的ID键查询,使用的是行锁。