上一篇中,我们了解了B树,辣么。。B+树又是什么呢??
一:定义:B+树是基于B树的,是B树的变形,也是一种多路搜索树。查询性能更加出色。
1.每个父节点元素出现在子节点中,是子节点的最大或最小元素。
2.根节点的最大元素也是B+树中的最大元素
3.所有关键字都在叶子结点出现,包含了全量元素信息。
5.每个叶节点都带有指向下一个元素的指针,从而形成了一个有序链表。
提出一个相关的概念:卫星数据,在算法导论里,是指 一条纪录(一个对象中)中除了关键字key以外的其他数据。在B树中,中间节点和叶子节点都带有卫星数据,而在B+树中,只有叶节点带有卫星数据,中间节点只是索引,没有任何数据。
数据库的聚集索引(索引中键值的逻辑顺序决定了表中相应行的物理顺序)中,叶节点直接包含卫星数据,非聚集索引(索引的逻辑顺序与磁盘上行的物理存储顺序不同)中,叶节点含有指向叶节点的指针。
二:查找:
B+树大致上与B树一样,但是也有不同:
1. 间结点无卫星数据,磁盘页中可以存更多的元素。B+树相对高度更小,I/O次数更少。
2. B树查询需要最终找到叶子节点,B-树找到匹配元素即可
3. B树查找性能较差(最好情况是查根节点,最坏是查到叶子节点),B树每一次都稳定。
4. B树范围查询时,只能中序遍历。B+树在链表上遍历即可。
三:插入删除:
与B树类似,不再赘述。