B树和B+树的区别

索引是一种排好序能够提升查询性能的 数据结构
B+树与聚簇索引的关系是 B+树是一种数据结构用来实现索引
1.存储方式不同
B+树 简单来说把数据都存在叶子结点 内部的非叶子结点只包含键值和指向子节点的指针
其特点是所有数据都存储在叶子节点中,而内部节点仅用于索引。
内部节点:包含键值和指向子节点的指针,用于加速查找。
叶子节点:包含实际的数据(或指向数据的指针),并通过指针链接在一起,便于范围查询。

B树 是把数据和键值还有指向子节点的指针 叶子结点和非叶子结点都可以放
2.查询顺序过程不同
B树因为每个结点都放有数据所以要一个一个从上到下查
B+树只用在叶子结点上查找
3.结构稳定性不同
B树在插入时数据时要频繁更换树的结构导致不稳定
B+树只在叶子结点上操作 结构更稳定

4.范围查找性能不同
B+树 只用在子节点上查找而且子节点相互之间有双向链表
B树得自上而下逐个查找效率较低

5.适用场景不同
B树适合点查询 磁盘利用率低 比较节省性能
B+树适合范围查询 内部节点只存储键值和子节点指针,不存储数据,这使得每个节点可以容纳更多的键值,提高了磁盘利用率 所有数据都存储在叶子节点中内部有双向链表范围查询只需要遍历相邻的双向链表就行 非叶子节点和叶子节点存储的数据不一样,可以使用尽量深度低的树存储大量的数据,树的深度越低,查询的次数就越少,性能就越高

什么是键值? 主键索引:在关系型数据库中,主键通常作为聚簇索引的键值。例如,表 students 中的 id 列可以用作主键索引,B+树的键值就是 id,数据行按 id 的顺序存储在叶子节点中。

posted @ 2025-03-09 23:23  JavaYzz  阅读(36)  评论(0)    收藏  举报