查询分析器 desc 和 explain 作用基本一样,explain速度快一点
 explain 一条SQL语句出出现以下参数, 其中id,select_type,table 用于定位查询,表示本行参数所对应的SQL查询部分

- id
  SELECT 识别符,这是SELECT的查询序列号,不重要,需要注意的是,不要把id当成执行顺序,这并不准确
- select_type
  可以分为以下几种:
1、 SIMPLE: 指示非子查询和union的简单查询。

select * from class

2、PRIMARY:指示在有子查询的语句中最外面的select, 主查询。

select * from class where class_id in (select class_id from student)

3、UNION:指示使用union语句的第二个或者后面的select。

select name from teachers union select name from students 

4、DEPENDENT UNION: 子查询union语句的第二个或者后面的select。
5、UNION RESULT: union语句的结果集

select * from class where class_id in (select class_id from teachers union select class_id from students);

6、SUBQUERY: 子查询中的语句, 与union相反理解就行了。
7、DEPENDENT SUBQUERY: 子查询中的第一个语句。

select * from class where class_id in (select class_id from students)

8、DERIVED: 派生表的SELECT(FROM子句的子查询)。

select * from (select class_id,class_name from class)

- table
  就是表名,本行记录对应查询所应用的表。可以通过table表名帮助定位查询。
  使用explain时,有时table字段显示的并不是表名, 而是derived2 或 derived3等等。。。即derived X 代表的是id为X的查询所得到的结果集。例如:

EXPLAIN
SELECT so.storeorder_id,so.storeorder_sn,si,stores_name
from ec_stores_order so
INNER JOIN
(SELECT stores_id, stores_name from ec_stores_info where stores_creatorid=2) si
on so.store_id=si.stores_id

  explain该语句就会得到 derived 2 的table
- partitions
- type(重点)
  连接类型。查询效率的关键,下面按照从最佳类型到最坏类型进行排序
  从最好到最差的连接类型为const、eq_ref、ref、range、index和all。
1、system

  存在于手册中(没怎么见过),最好的连接类型,时候const联接类型的一个特例。
2、const

   表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次! 即在查询主键索引或是唯一索引时使用。

select * from table where id=1 //主键查询

3、eq_ref

   在连接查询时,连接字段使用主键或是唯一索引时被使用,很常见
4、ref

  与eq_ref相对,在连接查询时,连接字段使用非主键或是唯一索引的普通索引、单列索引或是组合索引的左前缀时被使用,该连接方式可以在索引列范围查询(< = >)时被使用
  ref,使用非唯一索引扫描或者唯一索引的前缀扫描,返回匹配某个单独值的记录行。
5、ref_or_null
  连接的索引列中有null值,ref就会变成这个
6、index_merge
  该联接类型表示使用了索引合并优化方法。在这种情况下,key列包含了使用的索引的清单,key_len包含了使用的索引的最长的关键元素。
7、unique_subquery
  该类型替换了IN子查询。
  unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。只适用于主键或唯一索引。
8、index_subquery
  该联接类型类似于unique_subquery。可以替换IN子查询,但只适合非唯一索引。
9、range
  只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。key_len包含所使用索引的最长关键元素。在该类型中ref列为NULL。
  当使用=、<>、>、>=、<、<=、IS NULL、<=>、BETWEEN或者IN操作符,用常量比较关键字列时,可以使用range。
10、index
  该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。
  当查询只使用作为单索引一部分的列时,MySQL可以使用该联接类型。(会扫描整棵索引树)
11、ALL
  没有用到索引,将扫描全表记录,应极力避免。
- possible_keys
  可能能用到的索引,没太大卵用~
- key(关键)
  用到的索引名,关键。查询效率与索引引用息息相关
- key_len
  MySQL使用的索引长度
- ref
  如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func
引用到的上一个表的列
- rows
  显示查询扫描的行数,显然数据越小越好
- filtered
  表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数。
- Extra
  查询的详细信息,包含所有其它操作,列如
  Distinct,using,index,using where,Using union等

Mysql中的explain和desc的更多相关文章

  1. MySQL查询分析器EXPLAIN或DESC

    转载:http://chenzehe.iteye.com/blog/1682081 MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况,如下需要计算2006年所有公司的销售额, ...

  2. 详解 MySQL 中的 explain

    来源:persister 链接:http://www.blogjava.net/persister/archive/2008/10/27/236813.html 在 explain的帮助下,您就知道什 ...

  3. 如何看MySql执行计划explain(或desc)

    简介 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 S ...

  4. MySQL中的EXPLAIN

    使用EXPLAIN加上SELECT语句可以获取优化器的查询执行计划 MySQL会在查询上设置一个标记,当执行查询时,这个标记会返回关于在执行计划中每一步的信息,而不是执行它.它会返回一行或多行信息,一 ...

  5. 在MySQL中使用explain查询SQL的执行计划

    1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...

  6. 如何在MySQL中使用explain查询SQL的执行计划?

    1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...

  7. 使用MySQL中的EXPLAIN解释命令来检查SQL

    我们看到许多客户的系统因为SQL及数据库设计的很差所以导致许多性能上的问题,这些问题不好解决,但是可以采用一套简单的策略来检查生产系统,发现并纠正一些共性问题. 很显然,您应该尽最大努力设计出最好的数 ...

  8. MySQL中EXPLAIN解释命令 查看索引是否生效

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: expla ...

  9. MySQL中EXPLAIN解释命令详解

    MySQL中的explain命令显示了mysql如何使用索引来处理select语句以及连接表.explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句. 1.EXPLAIN的使用方法:在s ...

随机推荐

  1. 《深入理解Java虚拟机》-----第4章 虚拟机性能监控与故障处理工具

    理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的. 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异 ...

  2. 推荐系统(Recommendation system )介绍

    前言 随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝.京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢.这个就是现在电子商务里面的推 ...

  3. ResDrawableImgUtil【根据图片名称获取resID值或者Bitmap对象】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 根据图片名称获取项目的res/drawable-xxdhpi中相应资源的ID值以及bitmap值的封装类. 效果图 代码分析 根据图 ...

  4. 【Javascript】JS的异步操作,浏览器的多线程间的协作

    遇到的问题,引发了思考 今天看了一个例子,强烈引发了我对于浏览器多线程之间的操作机制.同步与异步.回调函数的兴致,代码如下: <html> <head> <title&g ...

  5. 操作MongoDB数据库知识点

    一.命令行操作mongo: 1.开启数据库 mongo 如果启动mongo报以下错误: 运行brew services start mongodb 2.创建数据库并进入实例 use test 3.查看 ...

  6. java之servlet入门操作教程一

    这篇文章主要用来记录,进行servlet开发的一些简单操作步骤,帮助直接上手操作 准备: java环境配置:已配置(javac检验) myeclipse开发环境:已安装 tomcat服务器:已安装(或 ...

  7. asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用

    摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说. 上篇讲到DbSession,现在接着往下讲. 首先,还是把一些类似的操作完善一下 ...

  8. Spring-注解实现IOC

    一.定义 注解:是一种标记式的配置方式,与XML配置文件不同,注解提供了更大的便捷性,易于维护修改,但是耦合度高. 本质:是一个继承了 Annotation 接口的接口,注解本身并没有什么作用,通过特 ...

  9. pycharm中Django的安装和简单使用

    一.安装: 1.点击File,找到setting选项 2.点击+号,进入下面界面 结束后,安装完成 二.创建Django项目 创建成功后,新项目左侧: templates:用于存储HTML文件 set ...

  10. php禁用函数设置及查看方法详解

    这篇文章主要介绍了php禁用函数设置及查看方法,结合实例形式分析了php禁用函数的方法及使用php探针查看禁用函数信息的相关实现技巧,需要的朋友可以参考下 本文实例讲述了php禁用函数设置及查看方法. ...