MySQL原理--索引的原理

本文详细介绍了MySQL中B+树索引的工作原理。B+树的特点包括叶子节点存储实际数据,非叶子节点仅存储索引,且所有索引在叶子节点间形成有序链表。相较于B树,B+树更矮胖,减少了磁盘I/O次数,提高查询速度。B+树的非叶子节点不存储记录,能容纳更多索引,降低了查询的平均时间成本和波动性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文网址:MySQL原理--索引的原理_IT利刃出鞘的博客-CSDN博客

简介

本文介绍MySQL的索引的原理。

MySQL的索引默认是使用B+树来实现的。

B+ 树索引并不能找到一个给定键值的具体行。B+ 树索引能找到的只是被查找数据行所在的页。然后数据库通过把页读人到内存,再在内存中进行查找,最后得到要查找的数据。 

B+ 树的特点(相对于B 树)

  1. 叶子节点(最底部的节点)才会存放实际数据(索引+记录),非叶子节点只会存放索引;
  2. 所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表;
  3. 非叶子节点的索引也会同时存在在子节点中,并且是在子节点中所有索引的最大(或最小)。
  4. 非叶子节点中有多少个子节点,就有多少个索引;

下面通过三个方面,比较下 B+ 和 B 树的性能区别。

B+ 树对比B树的优点

查询的速度

B+树速度快

B+ 树可以比 B 树更矮胖,查询底层节点的磁盘 I/O次数会更少。因为B+ 树的非叶子节点不存放实际的记录数据,仅存放索引,因此数据量相同的情况下,相比存储即存索引又存记录的 B 树,B+树的非叶子节点可以存放更多的索引。

B树的速度慢

B 树进行单个索引查询时,最快可以在 O(1) 的时间代价内就查到,而从平均时间代价来看,会比 B+ 树稍快一些。

但是 B 树的查询波动会比较大,因为每个节点即存索引又存记录,所以有时候访问到了非叶子节点就可以找到索引,而有时需要访问到叶子节点才能找到索引。

上边只是部分内容,为便于维护,本文已迁移到此地址:MySQL原理-索引的原理 - 自学精灵

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值