赞
踩
目录
干货分享,感谢您的阅读!
explain命令是分析慢查询的一个常用方式,可以用来分析select 语句的运行效果,通过explain命令可以得到下面这些信息: 表的读取顺序,数据读取操作的操作类型 ,哪些索引可以使用,哪些索引被实际使用,表之间的引用,每张表有多少行被优化器查询等信息。
一般,使用explain分析问题主要从以下三个方面分析:
当前查询是否走了索引?
走的索引是不是期望的?
索引还有没有改进的空间,sql还有没有优化的余地?
这三点通过explain返回的各种字段来做分析,一般优化后需要反复查看explain来作出最后的选择。
备注:相关sql查看基本的操作分析可见参考文档,或后期我会自己补充一份举例的用例分析(待更新)
备注:相关sql查看基本的操作分析可见参考文档,或后期我会自己补充一份举例的用例分析(待更新)
一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。
查询成本
一个查询可以有不同的执行方案,可以选择某个索引进行查询,也可以选择全表扫描,查询优化器会选择其中成本最低的方案去执行查询。
IO成本
InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。
cpu成本
读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。
计算规则
InnoDB存储引擎规定读取一个页面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条件的成本默认是0.2。
1.SQL中explaind的使用介绍_sql server explain_天山童姥yy的博客-CSDN博客
2.MySQL中explain执行计划中额外信息字段(Extra)详解_start temporary_haughty_xiao的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。