先从二叉树开始:
二叉树:
插入时最理想的是构成一个二叉树搜索:
- 对于根节点,左子树中所有节点的值 <根节点的值<右子树中所有节点的值;
- 任意节点的左、右子树也是二叉搜索树;
缺点:
- 顺序插入时会形成单链表
- 插入数据越多,层数越多,检索效率降低
第一步优化:红黑树
特点:自平衡二叉树(解决顺序插入时形成的单链表)
缺点:二叉树的大数据时层级深,检索慢还未解决
第二步优化:B树
优点:
- 每个节点都可以放数据
- 层数变少,检索效率有所提高
缺点:
- 如果访问下一页需要回到父节点再到兄弟节点
第三步优化:B+树
优点:
- 非叶子节点不保存具体的数据,而只保存关键字的索引,即有更多的内存来存放索引,使得单层能存放的索引大幅度增加,因此层数大幅度减少,检索效率大幅度提高
- 叶子节点用链表串联起来,所有的数据都会出现在叶子节点,解决B树检索下一页的问题