当前位置:网站首页>数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
2022-07-26 17:33:00 【橘子ꦿ.๓】
可以从几个维度去看这个问题,查询是否够快,效率是否稳定,存储数据多少,以及查找磁盘次数,为什么不是二叉树,为什么不是平衡二叉树,为什么不是B树,而偏偏是B+树呢?
为什么不是一般二叉树?
如果二叉树特殊化为一个链表,相当于全表扫描。平衡二叉树相比于二叉查找树来说,查找效率更稳定,总体的查找速度也更快。
为什么不是平衡二叉树呢?
我们知道,在内存比在磁盘的数据,查询效率快得多。如果树这种数据结构作为索引,那我们每查找一次数据就需要从磁盘中读取一个节点,也就是我们说的一个磁盘块,但是平衡二叉树可是每个节点只存储一个键值和数据的,如果是B树,可以存储更多的节点数据,树的高度也会降低,因此读取磁盘的次数就降下来啦,查询效率就快啦。
那为什么不是B树而是B+树呢?
1)B+树非叶子节点上是不存储数据的,仅存储键值,而B树节点中不仅存储键值,也会存储数据。innodb中冶的默认大小是16KB,如果不存储数据,那么就会存储更多的键值,相应的树的劫数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的IO次数有会再次减少,数据查询的效率也会更快。
2)B+树索引的所有数据均存储在叶子节点,而且数据是按照顺序排列的,链表连着的。那么B+树使得范围查找,排序查找,分组查找以及去重查找变得异常简单。
MySQL中都有哪些触发器?
1、Before Insert
2、After Insert
3、Before Update
4、 After Update
5、 Before Delete
6、After Delete
边栏推荐
- Leetcode 0139. word splitting
- VIM多行操作
- Data warehouse: fact table of detailed dimensional modeling
- The first day of Oracle (review and sort out the common knowledge points of development)
- PS_ 2_ layer
- 推荐效果不如意,不如试试飞桨图学习
- Ten year structure five year life-06 impulse to leave
- Machine learning by Li Hongyi 2. Regression
- 【一知半解】线程池
- 我要开中信的证券账户找渠道的经理开安全吗?
猜你喜欢
随机推荐
效率提升98%!高海拔光伏电站运维巡检背后的AI利器
8.1 Diffie-Hellman密钥交换
Day 4 of SSM practice_ Get user name_ User exit_ User CRUD_ Password encryption_ Roles_ jurisdiction
[training day3] delete
web项目文件简单上传和下载
PS_ 1_ Know the main interface_ New document (resolution)_ Open save (sequence animation)
LeetCode50天刷题计划(Day 2—— 无重复字符的最长子串 10.00-12.00)
2、 Topic communication principle, code implementation
Understanding service governance in distributed development
[brother hero July training] day 25: tree array
The Agile Manifesto has four values and twelve principles
链表-合并两个排序的列表
Machine learning by Li Hongyi 2. Regression
Apartment rental system based on JSP
.Net CLR GC 动态加载短暂堆阈值的计算及阈值超量的计算
Leetcode 0139. word splitting
继续卷技术 埋头苦学,越学越会
[Digital IC] understand Axi Lite protocol in simple terms
It is said that the salary of Alibaba P7 is really fragrant
Greedy - 455. Distribute cookies









