前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql中explain命令查看执行计划

Mysql中explain命令查看执行计划

作者头像
呼延十
发布2019-07-01 17:18:42
2K0
发布2019-07-01 17:18:42
举报
文章被收录于专栏:呼延

前言

使用explain命令可以查看一条查询语句的执行计划,这篇文章记录一下查询计划的各个属性的值极其含义.

那么我们按照图中的顺序逐个字段的看一下.

本文采用官网的数据库样本,下载地址:[MySQL官方数据库](https://dev.mysql.com/doc/index-other.html)

id

一组数据,表示任务被执行的顺序,序号越大的任务越先执行.

select_type

id

select_type

description

1

SIMPLE

不包含任何子查询或union等查询

2

PRIMARY

包含子查询最外层查询就显示为 PRIMARY

3

SUBQUERY

在select或 where字句中包含的查询

4

DERIVED

from字句中包含的查询

5

UNION

出现在union后的查询语句中

6

UNION RESULT

从UNION中获取结果集,例如上文的第三个例子

table

查询的数据表,当从衍生表中查数据时会显示 x 表示对应的执行计划id。

partitions

表的分区字段,没有分区的话则为null.

type

这条查询语句访问数据的类型.所有可取值的范围:

  • ALL 扫描全表数据
  • index 使用索引
  • range 索引范围查找
  • ref 非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找
  • eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
  • const,system 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问
  • .NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引

possible_keys

这次查询可能使用的索引,但是不一定是真正使用的索引.

key

查询真正使用的索引,若没有使用索引,显示为NULL.

key_len

使用索引的长度,在使用联合索引的时候可以根据这一列来推算使用了哪些最左前缀索引.

计算方式:

  • 所有字段如果没有设置为not null,则需要加一个字节.
  • 定长字段占用实际的字节长度,比如:int占用4个字节,datatime占用4个字节.
  • 变长字段占用多占用两个字节,比如varchar(20)将会占用20*4+2 = 82个字节.
  • 不同的字符集占用字节不一样,上面举例是使用的utf8mb4字符集.

ref

表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

rows

返回估算的结果集数目,并不是一个准确的值。

extra

包含一些其他信息,常见的有以下几种:

  • Using index 表示相应的select操作中使用了覆盖索引(Covering Index)
  • Using where 表示拿到记录后进行“后过滤”(Post-filter),如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集
  • Using temporary 表示mysql在这个查询语句中使用了临时表.
  • Using filesort 表示使用了文件排序,即查询中的排序无法通过索引来完成.

参考文章

MySQL官方文档

完。

ChangeLog

2019-06-03 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • id
  • select_type
  • table
  • partitions
  • type
  • possible_keys
  • key
  • key_len
  • ref
  • rows
  • extra
  • 参考文章
    • ChangeLog
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档