扫码阅读
手机扫码阅读
什么是聚簇索引什么是非聚簇索引

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。


springboot葵花宝典
扫码关注公众号
文章摘要
1. 聚集索引和二级索引
聚集索引(Clustered Index)将数据与索引存储在一起,索引的叶子节点保存整行数据。每个表必须有且只有一个聚集索引,通常基于主键创建。而二级索引(Secondary Index)将数据与索引分开存储,叶子节点保存字段值对应的主键值,可以有多个。
聚集索引的选取顺序为:主键优先,其次选择唯一索引,若不存在,则自动生成隐藏的 rowid 作为聚集索引。
1.1 回表
回表是通过二级索引找到主键值,再通过主键值到聚集索引中获取整行数据的过程。例如,当通过二级索引查询时,若返回的数据需要整行记录,会触发回表操作。
2. 覆盖索引
覆盖索引指查询使用了索引,且返回的列能够直接从索引中获取,无需回表。例如,使用主键索引查询整行数据或二级索引查询部分列时可能构成覆盖索引。覆盖索引效率高,避免了回表查询的开销。
3. MySQL超大分页处理
超大分页查询(如使用 LIMIT)效率低,尤其在数据量大时,因需要排序大量记录。优化方法是利用覆盖索引结合子查询,仅查询需要的 ID 列,然后通过子查询过滤这些 ID 对应的数据,从而提高查询效率。
4. 面试题总结
- 聚簇索引和非聚簇索引:聚簇索引将数据与索引存储在一起,非聚簇索引分开存储,前者通常基于主键创建,后者可有多个。
- 回表查询:通过二级索引获取主键值,再到聚簇索引中获取整行数据。
- 覆盖索引:查询使用的索引包含返回的所有列,避免回表查询,效率更高。
- 超大分页处理:结合覆盖索引和子查询优化分页查询,减少数据排序的开销。
如果本文对您有帮助,欢迎点赞、收藏、转发支持!
想要了解更多内容?


springboot葵花宝典
扫码关注公众号
springboot葵花宝典的其他文章
Vue结合Vuex和Vue-Router进行JWT身份验证
我们将使用 Vuex 和 Vue-Router 构建一个支持前端Vue项目 JWT 身份验证
JAVA8时间操作总结
今天介绍Java8中日期和是时间API,主要介绍了LocalDate和LocalTime类,这些API都是线程安全的,而Date和Calendr类都是 是非线程安全的,介绍的可能不是很全还请一起探讨!
Spring Boot Security + JWT Token 的简单应用
今天,我们在Spring Boot示例中学到关于Spring Security和基于JWT令牌的身份验证的有趣知识。尽管我们写了很多代码,但我希望你能理解应用程序的整体架构,并轻松地将其应用到你的项目中。
Web-9-从Filter到Listener:揭秘Java开发中的神奇力量
Filter和Listener是Java Web开发两个组件。Filter用于在请求被处理前后对请求和响应进行预处理和后处理,如身份验证、日志记录等;Listener用于监听Web应用程序的生命周期、会话和上下文的变化,并执行相应的逻辑
深入理解InnoDB存储引擎:逻辑存储结构、事务原理
InnoDB存储引擎是MySQL中最常用的存储引擎之一,它支持高级事务处理和并发控制,以及稳健的性能。本文将深入探讨InnoDB存储引擎的核心概念和工作原理,包括逻辑存储结构、事务原理。
加入社区微信群
与行业大咖零距离交流学习


PMO实践白皮书
白皮书上线
白皮书上线