MySQL 为什么使用 B+ 树来作索引,对比 B 树它的优点和缺点是什么?

什么是B+树

什么是B树

对比

索引为什么用B+树不使用B树

1.B+树非叶子节点不存储数据记录,可以存储更多的key,树的层级相对矮一些;B树非叶子节点存储数据记录数据,单个节点存储的key 相对较少,树的层级想多高一些。对于查询,B树消耗更多I/O资源
2.B+树叶子节点之间采用链表,可以更好的支持范围查询和排序。B树需要递归整棵树

B树与B+树比较

B+树层级更少,查找更快
B+树查询速度稳定:由于B+树所有数据都存储在叶子节点,所以查询任意数据的次数都是树的高度h
B+树有利于范围查找
B+树全节点遍历更快:所有叶子节点构成链表,全节点扫描,只需遍历这个链表即可
B树优点:如果在B树中查找的数据离根节点近,由于B树节点中保存有数据,那么这时查询速度比B+树快。

索引为什么不用红黑树

红黑树的层级更深,查询I/O更多

索引为什么不用哈希

哈希对于查询单个节点比较快,不适合范围查询和排序

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容