主键索引为什么要有序
2026/8/25 16:11:17 网站建设 项目流程
  • 数据库索引是什么? B树
  • B树是如何工作的?按排序顺序存储数据
  • 如果无序排序/随机uuid会怎么样? 页分裂,碎片化,写入性能下降,空间浪费
  • 具体好处:快速查找(二分查找),范围查询(between 、>),排序,顺序插入(页填充)
  • 聚簇索引中,数据行按主键顺序在磁盘上物理存储

最根本的原因是索引的数据结构是B+树,还有聚簇索引的物理存储。

需要从四个方面看:

  1. 核心机制(B+树)
  2. 插入性能(页分裂)
  3. 查询性能(范围/排序)
  4. 存储空间(碎片)

因为B+树需要有序才能工作,有序是二分查找和范围查找的前提

其次,主键是聚簇索引,聚簇索引中表数据按照主键物理存储。如果有序,数据追加到末尾,只需填满页。如果无序,插入位置随机,导致页分裂,大量磁盘I/O和碎片化。

详细说明

写入性能

无序插入,新插入的行可能落在已满的旧数据页中间,导致innodb必须页分裂(申请新页,移动数据)来腾出空间,这不仅消耗大量IO,还会产生磁盘碎片。

而有序主键,只会写满旧页,再开新页,写入速度极快。

辅助索引的回表效率

辅助索引叶子节点,存储主键

主键有序,那么辅助索引查找到的数据,在物理上紧密相邻,回表时利用磁盘预读特性,一次性加载相邻行,大幅减少随机io。

高效的范围查询

因为有序,所以范围查找,能根据链表顺序扫描。

无序,就会退化为几乎全表扫描

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询