目录
  1. 1、聚集索引
  2. 2、辅助索引
  3. 参考
深入了解Mysql【十】B+树聚集索引与辅助索引

数据库中的B+树索引分为聚集索引和辅助索引,也可以叫聚簇索引与非聚簇索引,其内部都是高度平衡的B+树。
聚集索引与辅助索引最大的不同是:聚集索引叶子节点存放的是一整行信息。

1、聚集索引

  • InnoDB是索引组织表,表中的数据按照主键顺序存放,聚集索引是按照每张表的主键构造的一颗B+树。
  • 叶子节点存储了表的行数据,也叫做数据页。每个数据页通过双向链表进行链接。
  • 因为数据页只能按照一颗B+树进行排序,所以每张表只能拥有一个聚集索引。

聚集索引-id.png

因为只能在数据页上查找行记录,所以查询性能稳定;又因为数据页直接通过双向链表链接,所以范围查询很快捷。

2、辅助索引

  • 辅助索引也称非聚集索引,叶子节点除了包含键值以外,还包含与之对应的行数据的聚集索引的键值。
  • 每张表上可以有多个辅助索引。
  • 当通过辅助索引查询数据,会执行两次查询:
    首先从辅助索引中获取聚集索引的键值,再通过获取的键值去聚集索引中获取行数据。

下图中,name属性为辅助索引,通过name获取到主键id,再通过主键id就可以获取到数据行。
辅助索引-name.png

参考

MySQL索引背后的数据结构及算法原理

tencent.jpg

文章作者: ClawHub
文章链接: https://www.clawhub.club/posts/2019/11/21/%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3Mysql/%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3Mysql%E3%80%90%E5%8D%81%E3%80%91B+%E6%A0%91%E8%81%9A%E9%9B%86%E7%B4%A2%E5%BC%95%E4%B8%8E%E8%BE%85%E5%8A%A9%E7%B4%A2%E5%BC%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的博客
打赏
  • 微信
  • 支付宝
扫一扫关注ClawHub公众号,专注Java、技术分享、面试资源。