当前位置:网站首页>Explain / Desc 执行计划分析
Explain / Desc 执行计划分析
2022-08-01 09:23:00 【棒棒吃不胖】
简单说明
在MySQL中,explain
和desc
都可以生成优化器关于SQL执行的信息,因此无论用哪一个,结果都是一样的,本文只用desc
进行说明。
下面是一条查询语句以及对应的SQL执行计划:
由图可知,该SQL执行计划展示了12个元素信息。
id
第一个是id
,表示select
语句操作表的执行顺序。
其中id
的值越大,表示优先级越高。
当id
相同时,一般从上至下的顺序执行,但具体由优化器决定。
当id
不同时,可能出现嵌套的子查询,子查询优先级更高,先执行。
select_type
第二个是select_type
,区分不同的查询类型,包括SIMPLE
、PRIMARY
、SUBQUERY
、DERIVED
、UNION
、UNION RESULT
。
SIMPLE--最简单的查询,不包括子查询和交并集。
PRIMARY--包含子部分,最外层的就是PRIMARY。
SUBQUERY-- select 或 where 包含子查询
DERIVED-- from 后的子查询; 若UNION在from后面,最外层的是DERIVED
UNION-- union后面的select语句是UNION
table
第三个表示的是表名。
也可能是临时表、表的别名。
partitions
第四个表示查询表的分区信息。
如果没有分区,就是 null
有分区,则显示分区情况
type
第五个显示查询的类型,体现了性能的差异。
SQL优化的性能从好到坏依次如下:
system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
1)system:表内只有一行记录,数据量很少,不需要磁盘IO
2)const:查询时命中主键或命中唯一索引或命中一个常量值。该最多一个匹配行。
3)eq_ref:与const用法一样。区别在于eq_ref用于联表查询(组成的一行)。
4)ref:与eq_ref相比,可以使用非唯一索引,会返回多行查询结果。
5)ref_or_null:与ref相比,查询结果返回包含null
的值。
6)index_merge:索引合并优化,查询时使用两个以上的索引。
7)unique_subquery:替换IN
子查询,子查询返回不重复的值。
8)index_subquery:区别于unique_subquery,用于非唯一索引,能返回重复值。
9)range:针对索引字段,查询给定范围的行。一般是where
后跟的bettween...and、<、>、<=、in
等条件查询
10)index:遍历索引树,全表扫描。
11)all:从硬盘中读取,全表扫描。
possible_keys
第六个表示该字段所含的所有索引都会被列出来,但最终不一定会走这些索引。
key
第七个表示实际使用的索引。
key_len
第八个表示查询使用的索引长度(单位是字节),越短性能越好。
只计算 where 条件列的索引长度,排序和分组语句的索引不会计算在内。
ref
第九个表示索引被使用的列。
当使用常量等值查询,显示const,
当关联查询时,会显示相应关联表的关联字段
如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func
其他情况则显示 null
rows
第十个表示,系统估算查找到所需结果应读取的行数。
该值越小,性能越好。
filtered
第十一个表示,表中满足条件的记录数据所占百分比。
Extra
第十二个表示不能在前十一个列显示的其他信息。
1)Using index:使用了覆盖索引。
2)Using where:查询未走索引,通过where条件匹配相应的结果集。
3)Using temporary:查询的结果用临时表存储,一般是排序或分组。
4)Using filesort:无法用索引完成排序操作,ORDER BY
字段没有索引,需要优化。
5)Impossible where:由于不正确的where语句,找不到所需的结果。
6)No tables used:没有from语句。
边栏推荐
- leetcode-6132: Make all elements in array equal to zero
- 报告:想学AI的学生数量已涨200%,老师都不够用了
- 指针的介绍及应用
- HoloView--Customization
- 淘宝商品详情又见淘宝详情,升级高级版 API
- Detailed explanation of JVM runtime data area and JMM memory model
- 22 Niu Ke Duo School 1 I. Chiitoitsu (Probability dp)
- 力扣每日一题-第44天-290. 单词规律
- [Beyond programming] When the fig leaf is lifted, when people begin to accept everything
- 堆内存的介绍及应用(含例子)
猜你喜欢
The soul asks: How does MySQL solve phantom reads?
leetcode-6133: maximum number of groupings
报告:想学AI的学生数量已涨200%,老师都不够用了
[Tear AHB-APB Bridge by hand]~ Why aren't the lower two bits of the AHB address bus used to represent the address?
ACmix 论文精读,并解析其模型结构
net stop/start mysql80 access denied
SAP ABAP ALV+SMARTFORS 表分页 报表打印程序
云原生FAQ
Analysis of High Availability Solution Based on MySql, Redis, Mq, ES
opencv创建窗口—cv.namedWindow()
随机推荐
走进音视频的世界——mp3封装格式
scrapy爬虫框架的使用
堆内存的介绍及应用(含例子)
力扣每日一题-第44天-290. 单词规律
用OpenCV的边缘检测
【Untitled】
leetcode-6132:使数组中所有元素都等于零
如何保证数据库与缓存数据一致性?
What do the values 1, 2, and 3 in nodetype mean?
Classify GBase 8 s lock
[Dataset] Dataset summary of various insulators, bird's nests and anti-vibration hammers
VoLTE Basic Learning Series | Enterprise Voice Network Brief
扁平数组转树结构实现方式
22 Grab the Seat 1 C.Grab the Seat (Geometry + Violence)
量化日常工作指标
YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
22牛客多校1 J.Serval and Essay (启发式合并)
sqlserver 对比两张表的差异
实验。。。。
改版去不图床 Token 的获取