对于经常使用mysql的兄弟们,对explain一定不会陌生。当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息。 借助于EXPLAIN,你可以知道 1)你什么时候必须为表加入索引以得到一个使用索引找到记录的更快的SELECT。 2)你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。 官方的关于explain的文档在http://dev.mysql.com/doc/refman/5.1/en/using-explain.html(英文),本文可作为官方文献的不完整通俗读物。

使用的方法 EXPLAIN tbl_name 或: EXPLAIN [EXTENDED] SELECT select_options

前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,而今天要讲述的重点是后者。

举例 mysql> explain select * from event; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.00 sec)

各个属性的含义 id select查询的序列号

select_type select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。

table 输出的行所引用的表。

type 联合查询所使用的类型。 type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL 一般来说,得保证查询至少达到range级别,最好能达到ref。

possible_keys 指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。

key 显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。

key_len 显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。

ref 显示哪个字段或常数与key一起被使用。

rows 这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。

Extra 如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。 如果是where used,就是使用上了where限制。 如果是impossible where 表示用不着where,一般就是没查出来啥。 如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。

常见的一些名词解释 Using filesort MySQL需要额外的一次传递,以找出如何按排序顺序检索行。

Using index 从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。

Using temporary 为了解决查询,MySQL需要创建一个临时表来容纳结果。

ref 对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取

ALL 完全没有索引的情况,性能非常地差劲。

index 与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。

SIMPLE 简单SELECT(不使用UNION或子查询)

mysql vga怎么使用,mysql explain 详解相关推荐

  1. Mysql Explain 详解

    Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...

  2. JAVA中Explain注解用法,mysql之explain详解(分析索引最佳使用)

    mysql之explain详解(分析索引最佳使用) mysql explain用于分析sql 语句的执行及数据库索引的使用.本文将致力于帮助大家充分理解explain所返回的各项参数,从而使大家快速掌 ...

  3. MySQL高级之explain详解

    MySQL高级之explain详解 文章目录 MySQL高级之explain详解 一.expalin命令详解 1.使用方式 2.结果显示 3.主要的字段信息 4.作用 二.id字段 三.select_ ...

  4. MySQL Explain详解,分析语句为何运行慢

    MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语 ...

  5. php mysql explain_MySQL Explain详解

    MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语 ...

  6. MySQL Explain详解,explain查询结果每列含义详细解释

    转自:https://www.cnblogs.com/xuanzhi201111/p/4175635.html MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较 ...

  7. 【MySQL附录】A4:MySQL中执行计划explain详解

    MySql使用explain关键字可以模拟优化器执行sql语句,我们就能够知道MySql会如何处理咱们的sql, 可以根据explain的分析结果和MySql底层数据结构优化sql.文章内容基于MyS ...

  8. mysql之explain详解(分析索引最佳使用)

    mysql之explain详解(分析索引最佳使用) mysql explain用于分析sql 语句的执行及数据库索引的使用.本文将致力于帮助大家充分理解explain所返回的各项参数,从而使大家快速掌 ...

  9. mysql explain ref列_MySQL EXPLAIN详解

    MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45 MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令 ...

  10. Mysql之explain详解(超级全面)

    Mysql之explain详解(超级全面) 概念 explain能干嘛? 如何使用 输出字段解释 id(表的读取顺序) id相同,执行顺序由上至下 id不同,如果是子查询,id的序号会递增,id值越大 ...

最新文章

  1. 为什么图像处理如此困难
  2. mfc edit 超出行数时出现滚动条_千金难买“老鸭头”,是A股唯一可以获利200%的战法,一旦出现,不要犹豫满仓干,后市必定爆涨...
  3. Java常见排序算法
  4. Docker部署微服务详解
  5. redis module模块简单使用
  6. AcWing 1402. 星空之夜 1月28
  7. SQL语句性能分析常用命令
  8. 网站发布(项目上线流程)
  9. 2.晶晨A311D-编译Ubuntu/Debian固件
  10. rbf神经网络参数设置_基于梯度下降法的RBF神经网络(04)
  11. 本特利传感器330103-00-05-10-02-00
  12. CMMI体系建设的目的和意义
  13. java word jar包_处理word的poi的jar包
  14. 让iPhone不能自动下载系统更新的一个办法
  15. 手写一个springboot的starter
  16. 联想E480安装MacOS苹果系统记录
  17. 如何查看自己电脑显卡对应的cuda版本
  18. 【uiautomation】微信好友昵称及备注获取(存储到excel中)
  19. c语言rewind函数作用,C 文件 rewind() 函数
  20. 建立“知识共享”生态圈,培养塔尔斯基数学小后代,不是说假话、放空炮

热门文章

  1. 微软高级流格式ASF简介
  2. 基于医疗知识图谱的项目构建学习总结(一)—项目构建环境搭建及爬取数据部分
  3. 了解透明数据加密 (TDE)
  4. edm java_EDM推送
  5. diamond运算符
  6. Cocos Creator 计时器错误 cc.Scheduler: Illegal target which doesn't have uuid or instanceId.
  7. 计算机保持在线的几种方法,获取网络电影实际地址的几种方法.doc
  8. Xmarks已死,您还有其他选择吗?
  9. 边缘的容器化 — WasmEdge 与 seL4
  10. HNU11722 The Gougu Theorem