文章目录
1、B+树详解
1.1引言
【思考】当我们要在磁盘里查询数据的时候,采取何种方式来查找呢?
- 我们知道顺序遍历时间复杂度O(n) 效率最低,查询密集型的数据库 O(n) 效率最低。
- 改进一下,在数据结构中我们知道二分查找O(log2 n)效率较高,多路查询时间复杂度O(logx n)效率更高,
但是前提是要数据排列有序
。 - 紧接着,我们就要思考如何来排序的问题,如果把排序放在查询数据之前,那么时间复杂度为O(n)+O(logx n) 。这种情况下效率就更低了。
因此我们应该插入的时候排序O(n),在查询的时候O(logx n),由此引出我们B+树
把排序完的数据都放在B+树里面进行存储。
1.2B+树概述
(一)B树和B+树的引入
1、二叉查找树
1、概念
任意结点的左子树的值均小于根节点的值,右子树均大于根节点的值,并且没有键值相等的结点,如下图所示:
2、局限性
在某些情况,二叉查找树会退化成一个有n个结点的线性链,查询的效率就很低。
2、AVL树
1、概念
严格的拼很二叉树,用平衡因子差值判断是否平衡通过旋转来实现平衡。
2、局限性
维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多。适合于用于插入删除次数比较少,但是查找多的情况。
3、红黑树
1、概念
是一种弱平衡二叉树的,通过对从根到叶子的路径上各个结点着色方式(根结点和叶子结点必须是黑色,每个红色结点的两个结点都是黑色、从任一结点到每个叶子结点的所有路径都包含相同数目的黑色结点)
2、特性
相对于要求严格的AVL树来说,他的旋转次数变少了,所以对于搜索、