MySQL篇之回表查询

一、聚集索引

将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。特点:必须有,而且只有一个。

聚集索引选取规则:

  1. 如果存在主键,主键索引就是聚集索引。

  2. 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。

  3. 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。

二、二级索引

将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键。特点:可以存在多个。

三、回表查询

根据二级索引,找到对应的name对应的索引,然后通过聚集索引找到对应的行数据。

四、面试的回答

**面试官:**什么是聚簇索引什么是非聚簇索引 ?

**候选人:**聚簇索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键在作为聚簇索引的

非聚簇索引值的是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自己定义的索引都是非聚簇索引

**面试官:**知道什么是回表查询嘛 ?

**候选人:**嗯,其实跟刚才介绍的聚簇索引和非聚簇索引是有关系的,回表的意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表

备注:如果面试官直接问回表,则需要先介绍聚簇索引和非聚簇索引】

相关推荐
深藏功yu名几秒前
Day24(进阶篇):向量数据库 Chroma_FAISS 深度攻坚 —— 索引优化、性能调优与生产级落地
数据库·人工智能·python·ai·agent·faiss·chroma
茶本无香16 分钟前
JDK 21 ZGC分代功能详解:配置、原理及生产环境实践
java·jvm
xxjj998a18 分钟前
SpringBoot3.3.0集成Knife4j4.5.0实战
java
_evenif20 分钟前
MySql 8 一机多实例部署
linux·数据库·mysql
njidf23 分钟前
趣味项目与综合实战
jvm·数据库·python
张元清23 分钟前
使用 Hooks 构建无障碍 React 组件
前端·javascript·面试
李昊哲小课26 分钟前
PyMySQL完整教程
服务器·数据库·python·pymysql
wellc27 分钟前
Spring Boot 热部署
java·spring boot·后端
studyForMokey30 分钟前
【Android面试】窗口机制专题
android·面试·职场和发展
sqyno1sky30 分钟前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python