首页 > 其他分享 >二叉树、B树、B+数

二叉树、B树、B+数

时间:2023-02-10 21:34:18浏览次数:48  
标签:查询 二叉 索引 二叉树 数据结构 数据

1.二叉树,B树,B+树区别?为什么HashMap用二叉树,而数据库用B+树?

1.二叉树,B树,B+树区别?为什么HashMap用二叉树,而数据库用B+树?

(数据结构不要系统学,要针对性的为集合和数据库应用服务,才切企业胃口.)

二叉树,B树,B+树 都是数据结构!
数据结构:栈,数组,队列,链表

未命名文件

二叉法的好处:快速的提升查询效率!

HashMap针对Key的底层,采用的是二叉法,而且变种后的二叉法,变成:红黑二叉法

https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 演示网站!

image-20230210104823994

二叉法的缺陷:

1、层次结构可能越来越深,最后查询效率也会有所降低

2、每次查询都需要从根元素开始进行遍历


需要更加优秀的分叉法,比如:B-树学习网站:https://blog.csdn.net/weixin_40862011/article/details/85047834

未命名文件 (2)

B树的缺陷:

1、数据和索引存放位置在一起,每次都需要从根开始查询

2、不适合范围查询,性能特别地下


数据结构需要进一步优化:B+树 主键作为索引!

image-20220825105109398

B+树的好处:

1、数据和索引是分离的,对于主键索引来讲数据直接跟在索引的子节点上,便于:快速的查询

2、所有的叶子节点,都有相互的指针,便于我们去进行范围查询

3、数据是放置在叶子节点上的,查找数据时不需要从根开始遍历,直接从叶子节点上查询数据就可以!

非主键索引,对于B+树,数据和索引是单独的2张不同的表!那时就可能出现回表查询!

聚簇索引:索引和数据挂载在一起!

非聚簇索引:索引和数据 分别位于不同的数据表中,在查询非索引数据时,就存在回表查询的情况!

MySQL5.5以后,默认的存储引擎采用InnoDB,InnoDB中针对索引的存储数据结构,默认采用的是B+树;

MySQL5.5之前,默认的存储引擎采用MyIsam,当时针对索引的存储数据结构,默认采用的是Hash表!

image-20230210111653300

(数据结构不要系统学,要针对性的为集合和数据库应用服务,才切企业胃口.)

标签:查询,二叉,索引,二叉树,数据结构,数据
From: https://www.cnblogs.com/amor2818/p/17110333.html

相关文章