当前位置:网站首页>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语句。
边栏推荐
- Holoview--Introduction
- 常见的API安全缺陷有哪些?
- 灵魂发问:MySQL是如何解决幻读的?
- What do the values 1, 2, and 3 in nodetype mean?
- Prime Ring Problem(素数环问题)
- [Interview: Concurrency 39: Multithreading: Thread Pool] ThreadPoolExecutor Class - Submit, Stop
- Redis学习
- Leicester Weekly 304 6135. The longest ring in the picture Inward base ring tree
- 报告:想学AI的学生数量已涨200%,老师都不够用了
- ACmix 论文精读,并解析其模型结构
猜你喜欢
随机推荐
HPC系统简介
【应用推荐】常见资源管理器整理,含个人使用体验和产品选型推荐
Pod environment variables and initContainer
Microsoft Azure & NVIDIA IoT developers season I | Azure IoT & NVIDIA Jetson development foundation
《时代》杂志:元宇宙时代将改变世界
USB Protocol (2) Terminology
GBase 8s 锁分类
Get the Token from the revised version of Qubutu Bed
【Unity3D】相机
Delphi MDI appliction documents maximize display, remove buttons such as maximize and minimize
Prime Ring Problem(素数环问题)
Microsoft Azure & NVIDIA IoT 开发者季 I|Azure IoT & NVIDIA Jetson 开发基础
灵魂发问:MySQL是如何解决幻读的?
【编程之外】当遮羞布被掀开,当人们开始接受一切
various network protocols
将aof文件转换为命令waoffle安装和使用
STM32个人笔记-看门狗
Centos install php7.4, build hyperf, forward RDS
sql server, FULL模式, dbcc shrinkfile(2,1) 不能收缩事务日志,还是原来的大小,是为什么?
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API









