当我们为ID去建立一个主键索引的时候,Mysql底层就会为我们去维护一棵树的结构,从而提升我们的数据检索效率,树的共同特性:小的索引在左边,大的索引在右边,每一次结点的寻址,都是一次磁盘的IO(如果IO的次数越少,检索的性能就越快)
B树每一个结点都存储了索引和数据
B+树把所有的数据都放在了最下面的叶子结点,而非叶子结点只存储索引,留出更多的空间,去存储更多的索引,从而可以组织一颗更宽的一颗B+树,树更宽,进行IO的数据检索次数就更少了,进而查询效率更快
Innodb引擎为什么要将B+树作为它默认的数据结构
B树
- 每一个结点都存储了索引和数据----树更高
- 无叶子结点链表结构-----范围支持不好
B+树
- 数据只存储在叶子结点----树更矮
- 叶子结点通过双向链表相连-----范围查询性能好
视频