mysql面试高频问题---覆盖索引🧻
1.mysql面试高频问题---慢查询如何定位和优化⬆️2.mysql面试高频问题---如何定位慢查询⌚️3.mysql面试高频问题---索引😄4.mysql面试高频问题---聚簇索引与非聚簇索引😊
5.mysql面试高频问题---覆盖索引🧻
6.mysql面试高频问题---索引创建的原则📖7.mysql面试高频问题---什么情况下索引会失效❎8.mysql面试高频问题---sql优化的经验😮9.mysql面试高频问题---事务的特性😅10.mysql面试高频问题---并发事务📚11.mysql面试高频问题---undo log和redo log的区别🙉12.mysql面试高频问题---事务-MVCC多版本并发控制(难)🚬13.mysql面试高频问题---mysql主从同步原理☀️14.mysql面试高频问题---mysql分库分表👿覆盖索引
1. 问题
覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。
判断下面的SQL哪些是覆盖索引,为什么?
select * from tb_user where id = 1
是,因为根据id查询的,id默认是主键索引,就是聚簇索引,聚簇索引中对应的是整行的记录
select id,name from tb_user where name = 'Arm'
是,因为通过name这个二级索引也可以找到id,是一次性可以查询出来id和name的
select id,name,gender from tb_user where name = 'Arm'
不是,需要通过回表查询才能获取到gender
2. 覆盖索引的概念
覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。
3. mysql超大分页处理
在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。
我们一起来看看执行limit分页查询耗时对比:
因为,当在进行分页查询时,如果执行limit 9000000,10,此时需要MySQL排序前9000010记录,仅仅返回9000000 - 9000010 的记录,其他记录丢弃,查询排序的代价非常大。
优化思路:
一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化
4. 问题总结
5. 问答
本文来自博客园,作者:xiaolifc,转载请注明原文链接:https://www.cnblogs.com/xiaolibiji/p/18027731
合集:
mysql面试题
分类:
八股文 / mysql面试题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通