指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
mysql之索引树结构分类

关于树结构中的节点分类:根节点、内部节点、叶子节点,帮你梳理一下它们的关系和特点,尤其结合数据库索引(比如 B+ 树)讲解。


1. 节点分类定义
节点类型定义说明
根节点树的最顶层节点唯一一个,没有父节点
内部节点非根节点且有子节点的节点介于根节点和叶子节点之间,负责索引导航
叶子节点没有子节点的节点树的最底层节点,存储具体数据或指向数据

2. 关系示意
         [根节点]
         /      \
  [内部节点]  [内部节点]
      |           |
  [叶子节点]  [叶子节点]
  • 根节点是树的入口。
  • 内部节点是“中间层”,连接根节点和叶子节点,起导航作用。
  • 叶子节点是最终存放数据的位置。

3. 以 B+ 树为例
  • 根节点 存储键值和指向子节点的指针,最顶层索引。
  • 内部节点 也是存键值和子节点指针,但不存具体数据,只是索引层级的导航节点。
  • 叶子节点 存储完整的索引键值以及对应的数据行(聚簇索引)或数据行的主键指针(辅助索引)。

4. 特点和作用
节点类型作用存储内容指针指向
根节点入口,开始搜索路径键值+指向子节点的指针子节点(内部节点或叶子节点)
内部节点导航,加快查找速度键值+指向子节点的指针子节点(内部节点或叶子节点)
叶子节点存储真正的数据或指向数据的地址索引键值 + 行数据或主键指针可能有链表指针指向相邻叶子节点(B+树)

5. 说明
  • 所有节点(根节点和内部节点)都至少有两个子节点,保证树高度平衡。
  • 叶子节点是没有子节点的末端节点,存储数据。
  • 在 B+ 树中,叶子节点之间通常通过链表连接,方便范围扫描。

6. 例子:InnoDB 聚簇索引 B+ 树结构
          根节点
     /               \
  内部节点          内部节点
  /      \          /      \
叶子节点 叶子节点  叶子节点  叶子节点(存储完整行数据)