MySQL explain 命令
概述
MySQL
的 explain
命令,主要用于查看实际查询过程中的一些执行细节(执行计划),也是查看优化器决定如何执行查询的主要方法
explain 使用示例
explain
的使用也很简单,在 select
语句之前增加 explain
关键字再执行整个语句即可。explain
的使用示例如下所示:
-- 在 select 语句前增加 explain 关键字即可
explain select id, name, age, register_date from user where name = '小美' and age = 22 and register_date = '2015-03-05'
最终返回的数据如下所示:
注意,如果在查询语句的 from
子句中不包含子查询的情况下,使用 explain
命令并不会真正地执行查询;但是如果包含了,那么 explain
仍然会执行子查询,并将子查询的查询结果放在临时表中。
explain 返回字段介绍
使用 explain
命令之后,将会返回优化器给这条查询语句制定的执行计划相关信息,这些信息里面主要包含以下的一些字段:
id
:查询子句的执行顺序,值越大越先执行,相等的情况下,排在前面的先执行select_type
:查询类型,一共有三个取值PRIMARY
:代表的是复杂查询中最外层的select
语句DERIVED
:代表的是from
后面的子查询叫衍生表(或者派生表)SUBQUERY
:代表的是select
中的子查询
table
:表示数据从哪张表(或者哪个查询子句)查询出来partitions
:表示数据从哪个分区表中查询出来的(小知识:一张表底层是由一个或多个分区表组成的,不同的数据可能会放到不同的分区表上)type
:表示关联类型或访问类型,即MySQL
决定如何查找表中的行,以及查找数据行记录的大概范围。性能从最优到最差分别为:null
:为空时,表示 MySQL 能在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如:从表中查询最小的主键值system
:当查询的表中只有一条数据时const
:用于主键或唯一索引键的列与常数进行比较时eq_ref
:使用了主键或唯一索引的全部部分,被连接使用时,最多只会返回一条符合条件的记录。range
:通常出现在范围查找中,使用索引来检索给定范围的行index
:从二级索引的第一个叶子节点开始扫描,一直到最后一个叶子节点ALL
:从主键索引的第一个叶子节点开始扫描,一直到最后一个叶子节点- 一般来说,查询最好能达到
ref
级别,最低要达到range
级别
posiible_keys
:查询过程中可能会被使用到的索引key
:实际使用的索引。有可能posiible_keys
不为空,但是key
为空,因为MySQL
最终会根据实际情况来判断是否使用索引,如果使用索引的代价比不使用索引的代价还大,那么MySQL
将不会使用索引key_len
:显示了MySQL
使用的索引字段长度,由这个值可以确定使用索引的部分ref
:查询字段的比较值,const
(常量)或者具体的列的名称rows
:MySQL
预估的要扫描的行数extra
:一些额外信息Using index
:在符合使用覆盖索引的场景情况下Using where
:使用了where
语句,且要比较的列上没有索引Using index condition
:查询的列没有完全被索引覆盖Using temporary
:查询过程中使用了临时表Using filesort
:使用外部排序,而非索引排序。如果数据较小时将在内存排序,否则需要在磁盘完成排序Select tables optimized away
:使用某些聚合函数(比如:max
、min
)来访问存在索引的某个字段时,结果直接可以用索引上获得
MySQL explain 命令相关推荐
- mysql explain insert_简述Mysql Explain 命令
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息帮 ...
- MySQL explain命令
简介 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈,在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返 ...
- Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.使用方法,在select语句前加上explain就可以了.如: 1.EXPLA ...
- MySQL Explain命令详解--表的读取顺序,数据读取操作的类型等
表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的) 不损失精确 ...
- 60-200-050-使用-命令-MySQL explain命令
文章目录 1.explain使用方法 2.ID 3. select type 4.table 5.Type 5.0 null 5.1 system 5.2 const 5.3 eq_ref 5.4 r ...
- mysql explain参数_MySQL命令 Explain参数说明
MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明. EXPLAIN Output Columns 列名说明id执行编号,标识select ...
- mysql explain ref列_MySQL EXPLAIN详解
MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45 MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令 ...
- mysql中explain命令
原文链接:https://blog.csdn.net/jiadajing267/article/details/81269067 其他文章: https://www.cnblogs.com/tufuj ...
- Mysql中explain命令查看语句执行概况
Mysql中可以使用explain命令查看查询语句的执行方式,使用方法举例:explain + 查询语句 例如:explain select * from user_info 几个重要的字段说明: t ...
最新文章
- 阿里大佬分享API网关在微服务架构中的应用
- centos安装ssdb
- SQLServer查询死锁
- 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
- 十三、流程控制之if语句
- 电影院为何有散落的青瓜?
- java如何处理灰度图片_Java图片的灰度处理方法
- Android之设置横屏竖屏
- 03. Java NIO Channel 通道
- 5G学习-3GPP协议入门
- JS验证邮箱 身份证 VISA 卡[转]
- 如何在PC上显示Hololens的视野
- java 读取xls、xlsx文件
- 微信小程序之评分页面
- python资格证_掌握核心竞争力:五大数据科学类资格证书
- 抖音上很火的3D立体动态相册
- 日常英语单词 - 足球
- Win10改用microsoft账户登录发生了错误怎么解决?
- 电子科学与技术转计算机容易吗,电子信息专业要不要转到计算机科学与技术专业??...
- [娱乐数学建模]如何优雅的吃掉肉夹馍并且不让肉从旁边溢出来
热门文章
- python—列表、字典生成式
- android一个工程的xml怎么引用另外一个工程的xml,如何在Android中使用XML引用库中另一个包的字符串?...
- l298n电机驱动模块使用方法_SPDK virtio 驱动模块介绍及使用
- 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居
- 一文玩转 EhCache 缓存框架!
- 给所有开发人员的 11 条忠告(第 4 条亮了)
- windows自定义快速启动(运行)命令
- EF中报错:附加类型“xxxx”的实体失败,因为相同类型的其他实体已具有相同的主键值。
- latex插入图片之后出现大段空白,并且紧随其后的文字如同被覆盖一般不见了
- 蓝桥杯 算法训练(四)结点选择(树形动态规划)