目录
一、慢查询explain分析的基本思路
二、explain返回字段详解
三、索引优化的原则以及失效情况举例
建立索引
优化索引
索引失效
四、通过explain优化sql的基本思路
五、知识补充
六、总结
参考相关博客
干货分享,感谢您的阅读!
在数据库优化过程中,SQL 查询的执行效率往往直接影响到应用程序的性能,特别是在面对海量数据时,优化查询语句显得尤为重要。而 命令,作为 MySQL 中常用的分析工具,为我们提供了一个深入了解 SQL 查询执行过程的视角。通过 返回的执行计划,我们可以清晰地看到数据库如何执行查询,进而识别潜在的性能瓶颈,并采取相应的优化措施。
explain命令是分析慢查询的一个常用方式,可以用来分析select 语句的运行效果,通过explain命令可以得到下面这些信息: 表的读取顺序,数据读取操作的操作类型 ,哪些索引可以使用,哪些索引被实际使用,表之间的引用,每张表有多少行被优化器查询等信息。
一般,使用explain分析问题主要从以下三个方面分析:
-
当前查询是否走了索引?
-
走的索引是不是期望的?
-
索引还有没有改进的空间,sql还有没有优化的余地?
这三点通过explain返回的各种字段来做分析,一般优化后需要反复查看explain来作出最后的选择。
备注:相关sql查看基本的操作分析可见参考文档,或后期我会自己补充一份举例的用例分析(待更新)
备注:相关sql查看基本的操作分析可见参考文档,或后期我会自己补充一份举例的用例分析(待更新)
建立索引
优化索引
索引失效
一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。
查询成本
一个查询可以有不同的执行方案,可以选择某个索引进行查询,也可以选择全表扫描,查询优化器会选择其中成本最低的方案去执行查询。
IO成本
InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。
cpu成本
读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。
计算规则
InnoDB存储引擎规定读取一个页面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条件的成本默认是0.2。
通过本文的介绍,我们深入了解了如何使用 命令分析 SQL 查询的执行计划,并掌握了如何解读执行计划中的关键字段。这些信息帮助我们识别查询中的瓶颈,如全表扫描、索引失效等,从而能够针对性地进行优化。此外,我们还探讨了索引优化的原则以及常见的失效情况,强调了在 SQL 优化中通过合理选择索引、调整查询结构来提升性能的重要性。
总之,掌握 命令的使用,不仅可以帮助我们更清晰地理解数据库如何执行查询,还能有效地指导我们在查询优化过程中做出更加精准的调整。希望本文的分享能够为大家在日常的数据库优化中提供一些实用的思路和方法。
1.SQL中explaind的使用介绍_sql server explain_天山童姥yy的博客-CSDN博客
2.MySQL中explain执行计划中额外信息字段(Extra)详解_start temporary_haughty_xiao的博客-CSDN博客
3.索引失效的几种情况_使用函数索引失效_PreciousLife的博客-CSDN博客
4.https://www.cnblogs.com/myseries/p/11265849.html