explain是MySQL中执行计划分析的利器,经常用来分析低效SQL。通过explain我们可以获取到数据的访问类型、索引的使用、分区信息等情况。这里列举以下explain分析的结果含义。

select_type

表示select的类型,常见的取值有simple(简单表,即不使用表连接或者子查询)、primary(主查询,即外层的查询)、union(union中的第二个或者后面的查询语句)、subquery(子查询中的第一个select)等

table

输出结果集的表

type

表示MySQL在表中找到所需行的方式,或者叫访问类型。常见的访问类型有以下几种:
all、index、range、ref、eq_ref、const/system、null
从左到右,性能由差到好

  • all:全表扫描,MySQL遍历全表来找到匹配的行
  • index:索引全扫描,MySQL遍历整个索引来查询匹配的行
  • range:索引范围扫描,常见于<、<=、>、>=、between等操作符
  • ref:使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值的记录行
  • eq_ref:类似ref,区别就在使用的索引是唯一索引(unique),对于每个索引值,表中只有一条记录匹配
  • const/system:单表中最多有一个匹配行,查询起来非常迅速,所以这个匹配行中的其他列的值可以被优化器在当前查询中当做常量来处理
  • null:MySQL不用访问表或者索引,直接就能够得到结果

possible_keys

表示查询时可能使用的索引

key

表示实际使用的索引

key_len

使用到索引的长度

rows

扫描行的数量

extra

执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息

partitions

如果进行了分区的话,返回访问的SQL分区

以上基本就是explain结果的基本字段含义了。另外MySQL还可以追加使用"show warnings\G"命令,来查看SQL真正被执行之前优化器做了哪些改写。如:

MySQL中explain用法含义说明相关推荐

  1. MySQL中Explain用法详解

    Explain简介 我们在写后端程序的时候,通常会写sql来查询数据,如果是单表查询的时候,那直接select就完事了,但是如果是连表查询数据量也不小的话,就造成了查询速度会比较慢,那么我们该怎么知道 ...

  2. MySql数据库explain用法示例_mysql explain用法学习

    本节内容: mysql中explain用法 如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一 ...

  3. mysql的explain怎么看_mysql中explain用法详解

    如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1 ...

  4. explain mysql怎么用_mysql中explain用法详解

    EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...

  5. MySql的Explain用法

    MySql的Explain用法 explain执行计划 explain执行计划 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.分析你的查询语句 ...

  6. 【MySQL】explain 用法详解

    [MySQL]explain 用法详解   explain命令主要来查看SQL语句的执行计划,查看该SQL语句有没有使用索引,有没有做全表扫描等.它可以模拟优化器执行SQL查询语句,从而知道MySQL ...

  7. mysql中as用法

    重命名列名或者表名. as可理解为:用作.当成,作为:一般是重命名列名或者表名.(主要为了查询方便) 重命名列.如:表text, 列 column_1,column_2 你可以写成: 1 select ...

  8. pdo mysql limit_PHP mysql中limit用法详解(代码示例)

    在MySQL中,LIMIT子句与SELECT语句一起使用,以限制结果集中的行数.LIMIT子句接受一个或两个offset和count的参数.这两个参数的值都可以是零或正整数. offset:用于指定要 ...

  9. Mysql中求两个时间差的小时数以及mysql中substring_index 用法

    Mysql中求两个时间差的小时数以及mysql中substring_index 用法 1.mysql中求两个时间的差,返回小时数:可以使用mysql的hour() 函数,具体如下: SQL code ...

  10. mysql中explain的使用,mysql使用方法_mysql中explain函数的使用方法

    摘要 腾兴网为您分享:mysql中explain函数的使用方法,英语字典,小熊到家,腾讯新闻,刷机大师等软件知识,以及adobeflashplayerformac,灯光工厂,全民小视频,网盘解析,37 ...

最新文章

  1. 激光雷达lidar与点云数据
  2. 正则表达式--检查颜色值
  3. 多媒体领域顶会--ACM MM 2020 会议论文打包下载
  4. CentOS5.8 RHCS配置
  5. python3.x获取windows自启动程序列表
  6. java8多线程运行程序_线程,代码和数据–多线程Java程序实际运行的方式
  7. Python学习之类和实例
  8. macOS自带Python2.7删除之后的悲剧
  9. 案例分享丨红外自动感应门设计与实现详解
  10. Java基础学习总结(158)——开发Leader如何做CodeReview
  11. ASIHTTPRequest类库简介
  12. RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer) [转]
  13. 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
  14. 「代码随想录」关于多重背包,你该了解这些!
  15. matlab实现kmeans聚类算法
  16. Anaconda及TensorFlow安装
  17. java生成树形Excel_java poi导出树形结构到excel文件
  18. 圆圈头像制作css,通过CSS3实现圆形头像显示
  19. Word产品需求文档,已经过时了
  20. 荣耀手表gs3和华为gt3 哪个好

热门文章

  1. 【游戏设计图形学】模拟自然界火焰的方法
  2. 如何判断一个点在三角形内部
  3. matlab emd功率谱密度,【脑电信号分类】脑电信号提取PSD功率谱密度特征
  4. 阿里云mysql空间不足_阿里云数据库MySQL系统文件导致实例空间满的解决办法
  5. python实训目的意义_Python-暑期实训day 1
  6. 希望Online -- 前10级快速功略 + 怪物掉的装备
  7. 青春对白,邮寄我的时光
  8. mysql 导入工具 php_MySQL数据导入导出方法与工具介绍_PHP教程
  9. 136A.Presents
  10. 在Word中,如何删除页眉页脚