MySQL中的B+树索引经验总结

一、什么是B+树

B+树是一种二叉树,由二叉查找树,平衡二叉树,B树演化而来。
在这里插入图片描述
请看上图

B+树的特点:

1)非叶子节点不存放数据,只存放键值,数据都存放在叶子节点中。
2)叶子节点都在同一层,且数据都是从左到右顺序存储的。左叶子节点的索引键值一定小于其根节点的键值,右叶子节点索引键值一定大于其根节点的键值。
3)叶子节点之间通过链表指针关联,使得范围查找更加快速,因为可以从一个叶子节点直接遍历到另一个叶子节点。

二、InnoDB中的B+树索引

InnoDB中的B+树索引分为两种,聚集索引和辅助索引(非聚集索引)。两者之间数据结构一样只是存放的数据不一样。

1) 聚集索引

主键就是一种聚集索引。InnoDB会根据主键构建一棵B+树,该B+树的叶子节点存放了表中的所有记录。因此所有数据都是根据主键进行排序后顺序存放。
根据主键查找后,可以直接到达叶子节点获取完整数据。

2)辅助索引

非主键索引都是辅助索引,InnoDB也会根据辅助索引来构建B+树,和聚集索引不同的是,辅助索引构建的B+树只存放索引键值和对应数据的主键。
因此根据辅助索引查找后,还需要根据主键重新回表获取数据。

所以,只有主键是聚集索引,其他创建的索引等都是辅助索引。

三、建立索引的原则

1)经常用作条件查询、分组、排序的字段适合建立索引
2)唯一性高的字段比唯一性低的字段更适合建立索引
3)索引不宜过多,会影响数据插入效率
4)频繁更新的字段不适合做索引,频繁更新索引需要不断更新B+树,降低更新效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑我归无处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值