深入理解MySQL_10 Explain的用法

Explain的用法

explain关键字可以模拟MySQL优化器执行SQL语句,可以很好的分析SQL语句或表结构的性能瓶颈。

1、id字段

select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

2、select_type字段

(1)SIMPLE

简单查询,不包含子查询或Union查询的sql语句。

(2)PRIMARY

查询中若包含任何复杂的子部分,最外层查询则被标记为主查询。

(3) SUBQUERY

在select或where中包含子查询。

(4)UNION

若第二个select出现在uion之后,则被标记为UNION。

(6)UNION RESULT

从UNION表获取结果的合并操作。

3、type字段

最好到最差备注:掌握以下10种常见的即可NULL>system>const>eq_ref>ref>ref_or_null>index_merge>range>index>ALL

4、table字段

表示数据来自哪张表

5、possible_keys字段

显示可能应用在这张表中的索引,一个或多个查询涉及到的字段若存在索引,则该索引将被列出,但不一定被实际使用

6、key字段

实际使用到的索引,如果为NULL,则没有使用索引查询中若使用了覆盖索引(查询的列刚好是索引),则该索引仅出现在key列表

7、key_len字段

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度在不损失精确度的情况下,长度越短越好key_len显示的值为索引字段最大的可能长度,并非实际使用长度即key_len是根据定义计算而得,不是通过表内检索出的

8、ref字段

哪些列或常量被用于查找索引列上的值

9、rows字段

根据表统计信息及索引选用情况,大致估算出找到所需的记录所需读取的行数

10、partitions字段

匹配的分区

11、filtered字段

它指返回结果的行占需要读到的行(rows列的值)的百分比

12、Extra字段

该列包含不适合在其它列中显示,但十分重要的额外信息

相关推荐
weixin_5112552111 小时前
MySQL升级记录
数据库·mysql
做运维的阿瑞13 小时前
数据库增删改的安全写法
数据库·sql·mysql
frjc15 小时前
数据库选型:如何从众多数据库中选出最理想的那一个
redis·mysql·clickhouse·elasticsearch
小马哥程序开发15 小时前
[点赞收藏免费领取 · 项目源码]37399民族服饰饰品商城小程序
sql·mysql·flask·源码·课程设计·程序开发·课设
数据库小学妹19 小时前
MySQL大表怎么优化?2亿行表的分区归档与冷热分离实战
数据库·mysql·分库分表·分区表·数据库运维·冷热分离
这个DBA有点耶20 小时前
连接池与MySQL交互实战:连接风暴、连接泄漏与连接状态异常排查
数据库·mysql·架构
需要82620 小时前
MySQL MVCC 与事务隔离级别:从一条 update 看版本链
java·数据库·spring boot·mysql·spring cloud
夜雪一千21 小时前
MySQL 默认值使用方法
数据库·mysql
bksczm21 小时前
MySQL进阶篇之范式及E-R图
数据库·sql·mysql
Shadow(⊙o⊙)1 天前
表的增删查改
数据库·mysql