摘要:
mysql主键什么时候不自增?在MySQL中,主键通常是自增的。但是,有一些情况下主键不会自增:1. 当表中已经存在主键列并且已经定义为主键时,新增的主键值不会自增。2. 当手动指...
mysql主键什么时候不自增?
在MySQL中,主键通常是自增的。但是,有一些情况下主键不会自增:
1. 当表中已经存在主键列并且已经定义为主键时,新增的主键值不会自增。
2. 当手动指定主键值时,新插入的记录的主键值不会自增。可以使用INSERT语句的VALUES子句来指定主键的值。
3. 当使用INSERT语句的SELECT子句来从另一个表插入记录时,新插入的记录的主键值不会自增。
4. 当使用REPLACE语句来替换主键已经存在的记录时,新插入的记录的主键值不会自增。
总的来说,主键不是自增的情况是在人为指定主键值的时候。
mysql主键加锁顺序?
在MySQL中,主键加锁的顺序是按照主键的顺序进行的。当执行一个查询或更新操作时,MySQL会根据查询条件或更新语句中涉及的主键来确定需要加锁的行。
图片来源:网络
如果查询或更新语句中涉及多个主键,MySQL会按照主键的顺序依次加锁。这个顺序是根据主键的定义顺序来确定的,通常是按照表的创建顺序或者主键的定义顺序来排序。这样可以确保在并发操作中,不同的事务按照相同的顺序加锁,避免死锁的发生。
MySQL ORDER BY主键id加LIMIT限制达到一定阈值后,为何没有走预期索引而走了主键索引?
Optimizer是基于RBO和CBO综合考虑,不是一定走索引效率最高,full scan table和full scan index有时候效率会更高。
假设查询 LIMIT 1, 符合WHERE条件的数据刚插入,是走WHERE条件索引快,还是ORDER BY id主键更快?显而易见,走主键full scan index更快