mysql查询的时候默认排序不是主键自增的顺序?

一直都有一种错觉,认为查询出来的数据如果没有设置排序的话,就是按照id(主键)自增的顺序排列,也就是id的正序排列。但是偶然的一个机会,发现了如果没有加排序的话,出现的不是想象中的自增顺序(逻辑顺序),那是什么顺序呢?答案就是物理存储顺序。

虽然一般情况,物理顺序和逻辑顺序保持一致,但是有个前提,那就是再你不删不改的情况下。如果你细心观察过会发现,当你进行大量的删除操作的时候,虽然数据量会减少,但是所占用的空间并没有减少。这些空间会在新数据插入的时候被利用起来,这就是为什么我们没有使用排序查询数据的时候,会出现与预期不一样的结果。

例如我们数据表中插入了id为1-10的数据,此时我们删除1,然后插入11,那么此时物理顺序是什么?应该是2,3…,11,还是11,2,3…呢?这就需要看删除的1的空间是否能够容纳数据11的插入,如果能够,就会在原来1的空间上插入数据11,如果不能,就另辟新的空间插入11。

整理表碎片

因此并不是删除的空间都能够被利用起来,为了提高空间利用率,我们应该学会整理这些表碎片。

optimize table table_name
查询的时候记得排序

由于逻辑顺序和物理顺序并非永远一致,所以我们在查询数据的时候记得带上order,确保查询出来的数据的顺序跟你想要的顺序一致。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值