为什么不用哈希
无论读还是写,哈希都比树更快,那为什么索引结构要选用树呢?因为对于排序、比较、分组这类操作,哈希索引的时间复杂度会退化到O(n),而这类查询实际业务中会经常出现。
为什么不用二叉树
二叉树每个节点只分两个叉,每个节点只能存储一个记录,随着数据量的增大,树的高度会显著增高,而高度越高,查询速度就越慢。
为什么不用B-树
B-树每层节点数目很多层数少,可充分发挥局部性原理,相比二叉树减少了磁盘IO次数,但每个节点都存储数据,查询要进行中序遍历,不是快速定位数据的最佳方式。
所谓局部性原理,就是大概率使用查询数据附近的数据,这个原理是基于磁盘预读的,这样可以减少磁盘IO。
为什么用B+树
B+树在B树基础上进行了改进,数据只存储在叶子节点上,而且叶子节点之间增加了链表,获取节点时不用中序遍历,便于快速定位数据,是减少磁盘IO的最佳方式。