MySQL中EXPLAIN关键字性能分析各个字段简单介绍

MySQL的性能分析当然离不开explain关键字

用法

EXPALIN + sql 语句

explain能干嘛

1.表的读取顺序
2.数据读取操作的操作类型
3.哪些索引可以使用
4.哪些索引被实际使用
5.表之间的引用
6.每张表有多少行被优化器查询

分析explain结果

结果所包含的信息字段
在这里插入图片描述

一、id:

select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序,查询出来的id有三种情况
情况一:全部id相同
在这里插入图片描述
情况二:全部id不同
在这里插入图片描述
情况三:部分id相同,部分id不同
在这里插入图片描述

select_type:

查询的类型,主要是用于区别普通查询,联合查询,子查询等复杂查询。
在这里插入图片描述
在这里插入图片描述

table

显示这一行的数据是关于哪张表的

type

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

possible_keys

在这里插入图片描述

key

在这里插入图片描述

key_len

在这里插入图片描述

ref

在这里插入图片描述

rows

在这里插入图片描述

extra

在这里插入图片描述

useing filesort

说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。
MySQL中无法利用索引完成的排序操作称为"文件排序”

using temporary

使了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by。

using index

表示相应的select操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错;
如果同时出现using where,表明索引被用来执行索引键值的查找;
如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。

using where

表明使用了where过滤

using join buffer

使用了连接缓存

impossible where

where子句的值总是false,不能用来获取任何元组

select tables optimized away

在没有GROUPBY子句的情况下,基于索引优化MIN/MAX操作或者
对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,
查询执行计划生成的阶段即完成优化。

distinct 优化distinct操作,在找到第一匹配的元组之后,立即停止找同样值的操作

猜你喜欢

转载自blog.csdn.net/TreeCode/article/details/108424476
今日推荐