explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

explain的使用方法很简单,只需要在select查询语句前面加上explain关键字就行。下面给出一个实例:

下面给出回显的数据的含义:

(1)id:SELECT识别符,这是SELECT查询序列号。

(2)select_type:select类型,它有以下几种值

 1)simple 它表示简单的select,没有union和子查询2)primary 最外面的select,在有子查询的语句中,最外面的select查询就是primary。3)union union语句的第二个或者说是后面那一个.现执行一条语句。
explain select * from uchome_space limit 10 union select * from uchome_space limit 10,10

(4)table:显示这一行的数据是关于哪张表的

(5)type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、 index和ALL

(6)possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

(7)key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

(8)key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

(9)ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

(10)rows:MYSQL认为必须检查的用来返回请求数据的行数。

(11)Extra:关于MYSQL如何解析查询的额外信息。坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

1)Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了2)Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了3)Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一4)Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行5)Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候6)Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

[MySQL]--查询性能分析工具-explain关键字相关推荐

  1. MySQL系列-高级-性能分析工具-EXPLAIN

    MySQL系列-高级-性能分析工具-EXPLAIN 1. EXPLAIN概述 1.1 官网介绍 1.2 EXPLAIN 基本语法 2. 基于函数和存储过程插入数据 2.1 创建表 2.2 创建函数和过 ...

  2. php mysql 网站性能分析工具_如何使用工具进行线上 PHP 性能追踪及分析?

    工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...

  3. sql性能分析(explain关键字)

    explain关键字结果 列名所代表的的含义: Id:MySQL QueryOptimizer 选定的执行计划中查询的序列号.表示查询中执行 select 子句或操作表的顺序,id 值越大优先级越高, ...

  4. 根据条件查询某条记录的条数_「性能与架构」MySQL 8 查询优化新工具 Explain Analyze...

    来源:性能与架构公众号 1. Explain Analyze 介绍 Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索. 但他仅仅是评估,不是实际的执行情况 ...

  5. MySQL性能分析工具的使用:慢查询日志、EXPLAN的使用、分析优化器执行计划:trace、MySQL监控分析视图-sys schema

    文章目录 1.数据库服务器的优化步骤 2.查看系统性能参数 2.1 语法 2.2 常用参数 3.统计SQL的查询成本:last_query_cost 4.定位执行慢的SQL:慢查询日志 4.1 慢查询 ...

  6. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][12]性能分析工具的使用 数据库服务器的优化步骤 查看系统性能参数 统计SQL的查询成本:last_quer ...

  7. Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)

    前 言 ?? 作者简介:,长跑型选手,立志坚持写10年博客,专注于java后端 ?? 专栏简介:mysql进阶,主要讲解mysql数据库进阶知识,包括索引.数据库调优.分库分表等 ?? 文章简介:本文 ...

  8. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析结果 如explai ...

  9. mysql 性能分析_十大MySQL性能分析工具汇总!专治MySQL性能瓶颈

    前言 MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈.CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候,磁盘I/O瓶颈发生在装入数据远大于内存容量的时候. MySQL数据库性能 ...

最新文章

  1. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第10章-基于模型预测控制的人机协同控制
  2. Python开发利器之UliPad
  3. java mod函数的使用方法_java 数学计算的具体使用
  4. 如何在xshell中创建一个SSH隧道
  5. 使用vsphere平台部署xendesktop时注意事项。
  6. System verilog随机系统函数$randomize使用方法
  7. JavaScript鼠标经过图片加亮显示
  8. VC++ 非托管代码 托管代码
  9. 380免费云存储_从四个方面分析:云存储服务的特点、影响
  10. 准备进入股市炒股,资金10万,各位能否给点建议?
  11. pygame精灵组有哪些方法_利用 pygame 开发一款游戏:「跳跳兔」(六)
  12. 浅谈对称加密和非对称加密
  13. MyBatis学习前篇
  14. 3D数学基础与三维渲染
  15. 35岁的程序员真的到头了么?国外的大龄程序员在干什么?
  16. 内存压力测试工具Memtester
  17. Cartopy理解变换和投影关键字
  18. 【转载】CSRF攻击与防御(写得非常好)
  19. “禁止燃放烟花爆竹”社会治理创新活动
  20. 使用注解来开发登录检查的切面功能

热门文章

  1. 数组的去重-----------------------来自大牛的讲解
  2. struts2学习之基础笔记1
  3. layoutSubview调用条件
  4. asp.net常用正则表达式
  5. 软考信息系统项目管理师_信息系统项目管理基础---软考高级之信息系统项目管理师008
  6. 理解一下ThreadLocal线程存储---springcloud工作笔记160
  7. Netty工作笔记0034---Netty架构设计--线程模型
  8. STM32工作笔记0020---新建工程模板基于寄存器-M3
  9. 人脸识别运行之前需要处理的问题
  10. 模态对话框与非模态对话框的区别