深入了解Mysql【十】B+树聚集索引与辅助索引
数据库中的B+树索引分为聚集索引和辅助索引,也可以叫聚簇索引与非聚簇索引,其内部都是高度平衡的B+树。
聚集索引与辅助索引最大的不同是:聚集索引叶子节点存放的是一整行信息。
1、聚集索引
- InnoDB是索引组织表,表中的数据按照主键顺序存放,聚集索引是按照每张表的主键构造的一颗B+树。
- 叶子节点存储了表的行数据,也叫做数据页。每个数据页通过双向链表进行链接。
- 因为数据页只能按照一颗B+树进行排序,所以每张表只能拥有一个聚集索引。
因为只能在数据页上查找行记录,所以查询性能稳定;又因为数据页直接通过双向链表链接,所以范围查询很快捷。
2、辅助索引
- 辅助索引也称非聚集索引,叶子节点除了包含键值以外,还包含与之对应的行数据的聚集索引的键值。
- 每张表上可以有多个辅助索引。
- 当通过辅助索引查询数据,会执行两次查询:
首先从辅助索引中获取聚集索引的键值,再通过获取的键值去聚集索引中获取行数据。
下图中,name属性为辅助索引,通过name获取到主键id,再通过主键id就可以获取到数据行。
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!