📚 分类
mysql
🕵🏽‍♀️ 问题描述
什么是索引?
👨‍🏫 问题讲解
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定査找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法这种数据结构就是索引。

❒ 二叉树
✔ 最坏的二叉树:单向链表

❒ 红黑树
✔ 数据量太大时,树会太高

❒ BTree
✔ B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支
✔ 以一颗最大度数(max-degree)为5(5阶)的BTree为例
✔ 那这个B树每个节点最多存储4个key
✔ 节点上是 数据 + 指针

❒ B+Tree
✔ 叶子节点上是 键值 + 指针 + 数据
✔ 叶子节点之间是双向指针
✔ 非叶子节点上是 键值 + 指针

❒ B树与B+树对比:

✔ 磁盘读写代价B+树更低;
✔ 查询效率B+树更加稳定;
✔ B+树便于扫库和区间查询;
🏳️‍🌈 问题总结
❒ 什么是索引?

✔ 索引(index)是帮助MySQL高效获取数据的数据结构(有序)
✔ 提高数据检索的效率,降低数据库的I0成本(不需要全表扫描)
✔ 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

❒ 索引的底层数据结构了解过嘛?

✔ MySQL的InnoDB引擎采用的B+树的数据结构来存储索引
✔ 阶数更多,路径更短
✔ 磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据
✔ B+树便于扫库和区间查询,叶子节点是一个双向链表
📖 问题信息
📈 浏览次数:26 | 📅 更新时间:2025-12-04 01:48:12
📦 创建信息
🏷️ ID:28 | 📅 创建时间:2024-09-29 04:40:48