为什么MySQL数据库要用B+树存储索引

本文讨论了二叉排序树的局限性及平衡二叉树(如红黑树)的引入,重点介绍了B树和其变种B+树在文件系统和数据库索引中的优势,尤其是在处理大规模数据和多条查询时的高效性能和磁盘加载策略。

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

 感觉这个写的很好,校招偶然发现的,后来电脑重装,花了好长时间就为了找这篇文章。

https://www.toutiao.com/?wid=1710768300266

平衡二叉树

二叉排序树:左边根节点比右边根节点小,并且左右子树都是二叉排序树。

在有序插入的时候就会退化成链表。

为了保证平衡(降低树的高度)就引入平衡二叉树,红黑树就是平衡二叉树的一种。

B树

B树就是多路搜索树,N路的B树最多能有N个叶子节点。这样设计也是为了进一步降低树的高度。

但是设计成无线多路的话就会退化成数组。

B+树

是B树的一种,他的数据都在叶子节点上,同时叶子节点之间使用指针相连。形成一个链表结构。

为什么不用数组。

文件系统和数据库的索引都是存在硬盘上的,并且如果数据量大的话,不一定能一次性加载到内存中。

为什么不用B树

数据库中select数据,不一定只选一条,很多时候会选多条,比如按照id排序后选10条。

如果是多条的话,B树需要做局部的中序遍历,可能要跨层访问。而B+树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。

而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值