- 现
user_id
为索引,status
无索引BEGIN; SELECT SUM(interest) FROM `pm_interests` WHERE user_id=10460 AND `status`=0 FOR UPDATE;
结果凡是user_id=10460不管status为何值,都会锁住
- 现
user_id
为索引,status
为索引BEGIN; SELECT SUM(interest) FROM `pm_interests` WHERE user_id=10460 AND `status`=0 FOR UPDATE;
结果凡是user_id=10460不管status为何值,都会锁住
SQL分析,查询语句使用的索引为
idx_pm_interests_user_id
- 创建为
user_id
、status
创建组合索引BEGIN; SELECT SUM(interest) FROM `pm_interests` WHERE user_id=10460 AND `status`=0 FOR UPDATE;
结果凡是user_id=10460 只锁定status为1,其它状态未锁定