开发者

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

目录
  • 聚集索引
  • 二级索引(非聚集索引)
  • 回表编程客栈查询
  • 面试回答技巧
  • 总结

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

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

聚集索引

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

选举规则

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

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

二级索引(非聚集索引)

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

回表查询

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

过程示例

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

定义

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

面试回答技巧

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新数据库

数据库排行榜