当前位置: 代码网 > it编程>数据库>Mysql > MySQL中的聚集索引、二级索引使用解读

MySQL中的聚集索引、二级索引使用解读

2025年07月06日 Mysql 我要评论
以下是关于聚集索引、二级索引(非聚集索引)以及回表查询的重点内容:聚集索引定义与特点:聚集索引是将数据存储与索引放在一块儿,b树索引结构的叶子节点保存了整行数据,并且有且只能有一个,通常情况下是主键。

以下是关于聚集索引、二级索引(非聚集索引)以及回表查询的重点内容:

在这里插入图片描述

聚集索引

定义与特点:聚集索引是将数据存储与索引放在一块儿,b树索引结构的叶子节点保存了整行数据,并且有且只能有一个,通常情况下是主键。

选举规则

  • 若表中有主键,那么主键就是聚集索引。
  • 若表没有主键,会查看是否有唯一索引,若有则将唯一索引当作聚集索引。
  • 若表既没有主键也没有唯一索引,innodb引擎会自动生成一个隐藏的聚集索引。

在这里插入图片描述

二级索引(非聚集索引)

  • 定义与特点:二级索引将数据与索引分开存储,b树索引结构的叶子节点关联的是对应的主键,一个表中可以有多个二级索引。
  • 存储结构示例:以给表中的name字段添加索引为例,其在b树中叶子节点存储的是对应数据的主键值,而非整行数据,这与聚集索引存储整行数据不同。

回表查询

在这里插入图片描述

过程示例

  • 假设有查询语句select * from user where name = 'arm',由于给name字段添加了索引,
  • 会先走二级索引。从根节点开始比对,
  • 找到对应的节点(如找到arm对应的节点),但此时二级索引只能拿到主键值(如10),
  • 因为查询语句是“select *”需要整行数据,所以要拿着主键值(10)再到聚集索引中查找。
  • 在聚集索引中同样从根节点比对,最终定位到整行数据。

定义

  • 先通过二级索引找到对应的主键值,然后拿到主键再到聚集索引中找到整行数据的过程就是回表查询。

面试回答技巧

  • 当被问到“什么是聚集索引和非聚集索引”时,回答应包含聚集索引是数据与索引放一块,叶子节点存整行数据,一般是主键且只有一个;二级索引(非聚集索引)是数据与索引分开存,叶子节点存主键值,可以有多个,单独给字段创建的索引大多是二级索引。
  • 当被问到“什么是回表查询”时,先介绍聚集索引和二级索引的概念,再解释回表查询是先通过二级索引找主键值,再用主键到聚集索引找整行数据的过程。实际面试中,即使面试官直接问回表查询,也应先介绍索引相关概念再解释回表查询。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com