这就要从各种数据结构的不足开始分析了:
哈希表:无法均匀分布数据,浪费空间;数据量很大时扩容吃力;数据量很大时哈希冲突很致命;范围查找需遍历
各种查找树:索引是存储在磁盘中的,考虑到索引可能会很大,所以不会一次性全部加载到内存中进行处理,每次 IO 只能取一个节点到内存中,比较后再取下一个节点,直到找到目标关键字。数据量很大时树会变得非常深,导致 IO 次数过多,效率低下
B 树:相同层数存储数据量不及 B+ 树;范围查找效率不及 B+ 树
B+ 树:对于千万数据量的数据库来说,3 到 4 层 B+ 树足够了,也就是最多进行 4 次 IO 便可检索指定数据;范围检索时只需要检索到范围最小值,然后通过叶子节点的指针一直遍历到范围最大值即可