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

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

相关推荐
老杨聊技术1 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos
sunxr.2271 小时前
Mysql-----最后一次作业
数据库·mysql
deng12042 小时前
【Thread类的用法(1)-- Thread类的基本用法】
java·java-ee
古月方枘Fry9 小时前
基于大模型+MySQL的innoai助手(可适配多数环境)
网络·数据库·mysql·aigc
无忧.芙桃10 小时前
MySQL数据库原理与实践(四):基本查询
大数据·数据库·mysql
三84411 小时前
get方法/post方法/SQL注入文字型/数字型
数据库·sql·mysql
啦啦啦啦啦zzzz12 小时前
oat++框架应用之do、dao、service
服务器·c++·mysql·oatpp
暖和_白开水12 小时前
数据分析agent(十三_5):meta_demo:mysql
mysql·数据挖掘·数据分析
我命由我123451 天前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
暖和_白开水1 天前
数据分析agent(十三_3):docker mysql容器镜像服务的异常错误
mysql·docker·容器