深入理解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字段

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

相关推荐
CoderYanger6 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
.痞老板.16 小时前
mysql初阶--增删改查操作
数据库·mysql
浮生若城1 天前
MySQL:库与表的操作
数据库·mysql
翔云1234562 天前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
captain3762 天前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
在多学一点2 天前
MYSQL第二次作业
android·数据库·mysql
yeccheng2 天前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
骑着蜗牛撵大象3272 天前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
android·数据库·sql·mysql·优化器·执行计划
.痞老板.2 天前
mysql初阶--数据类型
android·数据库·mysql
Risehuxyc2 天前
MySQL密码插件
数据库·mysql