一、EXPLAIN语法

语法:EXPLAIN SELECT

1、EXPLAIN EXTENDED SELECT 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句

2、EXPLAIN PARTITIONS SELECT 用于分区表的EXPLAIN

3、在Navicat图形化界面中,点击“解释”出现执行计划的信息

二、执行计划中的信息

1、id:包含一组数字,表示查询中执行select子句或操作表的顺序。id相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行。

2、select_type:主要用于区别普通查询, 联合查询, 子查询等复杂查询。

SIMPLE:查询中不包含子查询或者UNION

查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARY

在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERY

在FROM列表中包含的子查询被标记为:DERIVED(衍生)

若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED

从UNION表获取结果的SELECT被标记为:UNION RESULT

3、type:表示MySQL在表中找到所需行的方式,又称“访问类型”(ALL、index、range、ref、eq_ref、const、system、NULL),由左至右,由最差到最好

ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行

index:Full Index Scan,index与ALL区别为index类型只遍历索引树

range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于between、等的查询

ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找

eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描

const、system:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量

system是const类型的特例,当查询的表只有一行的情况下, 使用system

NULL:MySQL在优化过程中分解语句,执行时甚至不用访问表或索引

4、possible_keys:指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用

5、key:显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL

查询中若使用了覆盖索引,则该索引仅出现在key列表中

6、key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度

key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的

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

8、rows:表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数

9、Extra:包含不适合在其他列中显示但十分重要的额外信息

Using index:该值表示相应的select操作中使用了覆盖索引(Covering Index)。

MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件

包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index)

注意:如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降

Using where:表示MySQL服务器在存储引擎受到记录后进行“后过滤”(Post-filter),

如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集

Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询

Using filesort:MySQL中无法利用索引完成的排序操作称为“文件排序”

三、执行计划的局限

EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况

EXPLAIN不考虑各种Cache

EXPLAIN不能显示MySQL在执行查询时所作的优化工作

部分统计信息是估算的,并非精确值

EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

mysql查看执行计划_如何查看MySQL的执行计划相关推荐

  1. 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法

    在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希望有例子说明.. 当前版本是否支持 ...

  2. mysql目录在哪_如何查看mysql目录在哪

    查看mysql目录在哪的方法: 一.查看文件安装路径 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以mysql为例.比如说我安装了mysql,但是不知道文件都安装在哪 ...

  3. 向mysql数据库发送指令_常用的MySQL数据库命令大全

    飞信2017V5.6.8860.0 官方正式版 类型:聊天其它大小:69.1M语言:中文 评分:9.6 标签: 立即下载 常用的MySQL命令大全 一.连接MySQL 格式: mysql -h主机地址 ...

  4. mysql 常规命令操作_常见的MySQL命令大全

    一.连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1.例1:连接到本机上的MYSQL.首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot ...

  5. mysql 数据库命令大全_常用的MySQL数据库命令大全

    飞信2017V5.6.8860.0 官方正式版 类型:聊天其它大小:69.1M语言:中文 评分:9.6 标签: 立即下载 常用的MySQL命令大全 一.连接MySQL 格式: mysql -h主机地址 ...

  6. mysql事件调度定时任务_详解MySQL用事件调度器Event Scheduler创建定时任务

    前言 事件调度器相当于操作系统中的定时任务(如:Linux中的cron.Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用. 1. 创建/修改事 ...

  7. mysql内连接简写_技术分享 | MySQL 的 join_buffer_size 在内连接上的应用

    本文详细介绍了 MySQL 参数 join_buffer_size 在 INNER JOIN 场景的使用,OUTER JOIN 不包含.在讨论这个 BUFFER 之前,我们先了解下 MySQL 的 I ...

  8. mysql 慢sql分析_如何分析Mysql慢SQL

    内容摘要: 开启慢查询日志捕获慢SQL 使用explain分析慢SQL 使用show profile查询SQL执行细节 常见的SQL语句优化 一.开启慢查询日志捕获慢SQL ① 查询mysql是否开启 ...

  9. mysql 表结构监控_性能测试之mysql监控、优化

    共享表空间还有一个缺点就是不能自动收缩,自动收缩是什么意思呢,刚建表的时候,表里面数据很少,就1条数据,可能占用空间就几kb,到后来数据多了,占用了10个G的空间,然后发现有一些数据都是垃圾数据,删了 ...

  10. 阿里云 mysql 导出数据库备份_导出整个mysql数据库备份

    mysql和mssql的备份和恢复数据的方法 mysql数据库的备份方法可以用 导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] ...

最新文章

  1. 你的gpu驱动程序不满足_英特尔图形驱动程序现在在Windows/Linux之间共享约60%的代码库...
  2. P1458 顺序的分数 Ordered Fractions(有技巧的枚举)+C++类封装=精简代码
  3. .net的retrofit--WebApiClient底层篇
  4. OpenGL:显示一些立体图形示例程序(真不错)
  5. 数据结构与算法(C语言版)——陈越
  6. 尔雅网课鼠标移出停止播放解决办法
  7. oracle 触发器代码,Oracle触发器实例代码
  8. 江开计算机应用基础作业1答案,江苏开放大学计算机应用基础形考第二次作业答案-20210418193959.pdf-原创力文档...
  9. erp系统用MySQL吗_教你如何给ERP系统选数据库
  10. CEO “排队”卸任、企业“扎堆”造车,2021 科技圈十大事件你知道几个?
  11. android wifi 获取 getBssiD
  12. 绑定美版office365密钥_美版Microsoft/微软Office 365个人版怎么激活?
  13. 2006 IBM SOA主题会开始座席预定工作
  14. 如何通过网络数据的获取,做出这些数据分析项目?
  15. 为什么建模要尽量用四边面?如何将三边面转化成四边面?
  16. 经验正交分解EOF的Matlab的实现示例
  17. HDOJ 1495 倒可乐(BFS)
  18. Linux-日志管理篇
  19. cvpr2020 人脸检测与识别_古有照妖镜,今有换脸识别机,微软 CVPR 2020力作,让伪造人脸无处遁形...
  20. asp.net页面间数据传递方法总结篇

热门文章

  1. 不含抽象方法的抽象类 java_Java:抽象类继承非抽象类,且不包含抽象方法有何负面作用吗?...
  2. 理解CPU/寄存器/内存三者关系
  3. Linux / Server 端收到 SIGPIPE 信号的原因
  4. 小明分享|sigmstar SSD201/SSD202 针对MIPI的LCD屏配置操作说明分享,更多Sigmastar相关技术文档及沟通讨论,可以给小明留言,小明邀请你进入我们的技术沟通群
  5. 安装mysql5.3_源码安装mysql5.3.35
  6. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...
  7. 服务器上如何安装两个php网站,服务器安装两个php版本吗
  8. Oracle常用sql(持续更新)
  9. 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机
  10. 《构建之法》阅读笔记4