MySQL
为什么用B+树做索引
其他数据结构不适合做索引的原因:
- 二叉树不适合做索引的原因:某些特殊情况下会退化成链表
- 红黑树不适合做索引的原因:层高过高,I/O次数太多,效率低
- b树不适合做索引的原因: 每个节点都存储了索引和数据段,内存消耗过大,b树没有双向指针
- hash不适合做索引的原因:1、hash碰撞;2、不支持范围查询(最致命)
B+树作为索引的优点和特点:
优点:所有的数据都在叶子节点,非叶子节点只存储了索引
特点如下:
- 每一个节点分配了一个空间,存储索引页(磁盘页),大小为16K
- 根据要查找的值/范围进行节点选择加载
- 叶节点的磁盘空间地址
B-Tree和B+Tree对比
B-Tree和B+Tree区别:
1、B-Tree叶子节点之间没有双向指针,而B+Tree叶子节点之间有双向指针,该指针主要用于范围查找,否则得回到根节点从头遍历
2、B-Tree每个节点都存有索引和数据,而B+Tree把数据都放到了叶子节点,非叶子节点存储的是冗余索引,冗余索引是为了减少树的层高
存储引擎
存储引擎是修饰数据库表的,而不是修饰数据库
索引方式
- 单值索引
- 联合索引
索引匹配原则
- 最左前缀原则