开发者社区> 问答> 正文

mysql自增列删除后为什么不是按顺序排列的

如图所示,15到44之间删除了很多行,但45,46那些并没有被放到15与44之间,而46到50之间删除的位置,却被后面的,52,51填充回去了,为什么会这样?而且是52在51之前?然后,46到50之间应该有三个空位,但填充了两个之间,后面的53又跑到50后面去了,这又是为什么呢?
1

展开
收起
蛮大人123 2016-02-08 13:44:01 4143 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    自增ID是会按照出现过的最大值增加的,不管你删没删。
    MySQL会为每一个自增列储存一个这样的最大值,而不是每次都去表里查找最大的值。
    另外,序号是有意义的,可参照数据库设计的基本原则。
    每一个序号都对应着指定的一个事物。
    这么设计也可以避免因为不完全的删除(比如另外一个表的列和ID相关,但是没有随之删除)而导致混乱。
    我表示,多年经验,能不删的就不删。
    完整性,可恢复性,数据挖掘……
    加一个列作为标记(表明是否有效),比删除的设计要好。
    排序的问题,看你的SQL啊,那么在意顺序的话,就写个order by咯。

    2019-07-17 18:39:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像