二叉树
- 二叉树缺点:顺序插入时,会形成一个链表(红黑树解决:自平衡),查询效率大大降低
- 一个节点下最多只能包含两个子节点,层级深,检索速度慢
B树(多路平衡查找树)5阶(度)对应5指针对应四个节点
B+树
相对B树
- 所有的数据都会出现在叶子节点,其他节点存的是索引
- 叶子节点形成一个单向链表
mysql的B+树
MySQL索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
(面试题)为什么InnoDB存储引擎选择使用B+tree索引结构
- 二叉树:相对二叉树,层级更少,搜索效率更高
- B树:无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;
- 相对Hash索引,只支持等值匹配,Brtree支持范国匹配及排序操作
索引分类
在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:
聚集索引结构
二级索引:根据name创建索引