【MySQL】性能分析工具EXPLAIN

1、基本语法

EXPLAIN的使用与DESCRIBE基本相同

sql 复制代码
EXPLAIN SELECT select_options
或者
DESCRIBE SELECT select_options

2、EXPLAIN各列作用

2.1、table:表名

查询的每一行记录都对应一个单表,其中也分为驱动表和被驱动表

例如:

其中,s1是驱动表,s2是被驱动表

sql 复制代码
EXPLAIN SELECT * FROM S1 INNER JOIN S2 
2.2、id:每个SELECT关键字对应唯一一个id
  • id如果相同,即是一组,且从上往下执行
  • id越大,优先级越高,越先执行
  • id的每个号码,表示一趟独立的查询,一个sql查询趟数越少越好
2.3、select_type:SELECT关键字对应的查询类型
关键字 类型
SIMPLE 其他
PRIMARY UNION或者子查询最左边的小查询
UNION UNION或者子查询除了最左边的小查询
UNION RESULT UNION查询去重工作产生的临时表
SUBQUERY 不相关子查询
DEPENDENT SUBQUERY 相关子查询
DEPENDENT UNION 相关子查询中带有UNION
DERIVED 派生表的查询
2.4、type(重要)

执行计划的一条记录表示MySQL对某个表的执行查询时的访问方法。type列明确了这个访问方法。

访问方法 解释
system 表中只有一条记录,且该表的存储引擎统计数据是精确的,如MyISAM、Memory
const 根据主键或者唯一二级索引列与常数进行等值匹配
eq_ref 被驱动表根据主键或者唯一二级索引列与常数进行等值匹配
ref 普通二级索引列与常数进行等值匹配
ref_or_null 普通二级索引列与常数进行等值匹配或为null时
unique_subquery 如果查询优化器将IN子查询转化为EXISTS子查询且使用到主键进行等值匹配
range 使用索引获取某些范围区间的记录
index 使用索引覆盖,但需要扫描全部的索引记录时
all 全表扫描

由快到慢依次为*system > *const > *eq_ref > *ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > *range > *index > *ALL

2.5、possible_keys和key

可能用到的索引和实际上使用的索引

2.6、key_len(重要)

该属性表示实际用到的索引长度,可以帮助来检查是否充分的用上了索引。

相关计算:

  • varchar(10)变长字段且允许NULL = 10 * (utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)
  • varchar(10)变长字段且不允许NULL = 10 * (utf8=3,gbk=2,latin1=1)+2(变长字段)
  • varchar(10)固定字段且允许NULL = 10 * (utf8=3,gbk=2,latin1=1)+1(NULL)
  • varchar(10)固定字段且不允许NULL = 10 * (utf8=3,gbk=2,latin1=1)
2.7、ref

等值查询时,与索引列进行等值匹配的对象信息。

2.8、rows

预估要读取的条目数,越小越好

2.9、filtered

某表经过搜索条件过滤后剩余的记录条数的百分比

2.10、extra(重要)

会根据产生的错误进行相关提示


索引条件下推(以后补)

相关推荐
weixin_444012938 分钟前
PHP 中逻辑或(--)运算符的正确使用与条件逻辑重构指南
jvm·数据库·python
iAm_Ike6 小时前
Go 中自定义类型与基础类型间的显式类型转换详解
jvm·数据库·python
iuvtsrt6 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
tongluowan0077 小时前
MySQL中列数量及长度
数据库·mysql
-liming-8 小时前
单片机设计_串口调试工具
数据库·单片机·mongodb
鹿角片ljp8 小时前
从告警检测到智能研判:SQL 注入研判模型的设计与实践
数据库·sql
小新同学^O^9 小时前
简单学习 --> Spring事务
数据库·学习·spring
前进的李工9 小时前
MySQL慢查询日志优化实战
数据库·mysql·性能优化
KaMeidebaby10 小时前
卡梅德生物技术快报|禽类成纤维细胞 FISH 实验:鸟类性别染色体基因定位技术实现与数据验证
前端·数据库·其他·百度·新浪微博
ECT-OS-JiuHuaShan10 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算