explain 的结果

id

select_type   查询的序列号
        select_type
          simple (不含子查询)
          primary (含子查询、或者派生查询)
            subquery (非from子查询==》子查询)
            derived (form型子查询==》派生查询)
            union
            union result

table       输出的行所引用的表(也有可能是别名)。

type      联合查询所使用的类型。
type        显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system
      > const
      > eq_ref
      > ref
      > fulltext
      > ref_or_null
      > index_merge
      > unique_subquery
      > index_subquery
      > range
      > index
      > ALL
      const,表示通过索引一次就找到了;
      primary,表示使用了主键;
      all,表示为全表扫描;

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

key       最终使用的索引
          显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。
ref        因为这时认为是多个匹配行,在联合查询中,一般为REF。

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,
        这就要看是先过滤再排序划算,还是先排序再过滤划算。

SQL explain详细结果的更多相关文章

  1. [Oracle] SQL*Loader 详细使用教程(2)- 命令行参数

    sqlldr工具   SQL*Loader的客户端工具是sqlldr,在操作系统的命令行下输入sqlldr,后面不接任何参数,将显示帮助信息如下所示(所有命令行参数的简单描述及其默认值),所以你并不需 ...

  2. [Oracle] SQL*Loader 详细使用教程(3)- 控制文件

    控制文件是SQL*Loader里最重要的文件,它是一个文本文件,用来定义数据文件的位置.数据的格式.以及配置数据加载过程的行为,在sqlldr中以control参数指定控制文件.   在控制文件里配置 ...

  3. SQL语句详细汇总

    SQL语句详细汇总 | 浏览:3061 | 更新:2013-06-10 19:50 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 d ...

  4. Datagrip导入导出为一个sql文件详细说明 (mysql)

    Datagrip导入导出为一个sql文件详细说明 导出: (我的无法截图, 借用一张) 导入: (我的无法截图, 再借用一张) 完

  5. SQL EXPLAIN解析

    本文转载自MySQL性能优化最佳实践 - 08 SQL EXPLAIN解析 什么是归并排序? 如果需要排序的数据超过了sort_buffer_size的大小,说明无法在内存中完成排序,就需要写到临时文 ...

  6. MySQL SQL Explain输出学习

    MySQL的explain命令语句提供了如何执行SQL语句的信息,解析SQL语句的执行计划并展示,explain支持select.delete.insert.replace和update等语句,也支持 ...

  7. MySQL索引优化,explain详细讲解

    前言:这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一.Explain 用法 模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理 ...

  8. Oracle SQL explain/execution Plan

    From http://blog.csdn.net/wujiandao/article/details/6621073 1. Four ways to get execution plan(anyti ...

  9. Hadoop Hive sql 语法详细解释

    Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

随机推荐

  1. 【C#学习笔记之一】C#中的关键字

    C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列出的 ...

  2. HUST 1588 辗转数对

    1588 - 辗转数对 时间限制:1秒 内存限制:128兆 155 次提交 27 次通过 题目描述 假设当前有一个数对(a, b),我们可以通过一步将这个数对变为一个新数对(a + b, b)或者是( ...

  3. fmod函数和modf函数

    最近从博客上看到了一个fmod函数,结果又蹦出来一个modf函数 fmod函数: 头文件:#include<math.h> C库函数... fmod()用来对浮点数进行取模(求余),原型为 ...

  4. hdu_5104 Primes Problem()

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5104 rimes Problem Time Limit: 2000/1000 MS (Java/Oth ...

  5. 最长上升子序列(LIS经典变型) dp学习~5

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...

  6. TypeScript笔记 4--变量声明

    在上一篇:基础变量中我们在声明变量时使用了关键字let,这和JS中的var有点类似. 语法 基本语法:let 变量名:类型.当然类型不是必须的. let x:number; let y:string ...

  7. 关于Set对象(ES6)

    今天初次接触ES6,发现确实挺神奇的,许多用以前方法去实现需要一大串代码的,用ES6竟然几句就搞定了. 这里我要说的是Set对象.Set对象是ES6中新增的类型,可以自动排除重复项,生成Set对象后, ...

  8. Linux中安装opencv-3.3.1

    在ubuntu16.04中安装opencv3.3.1的过程中踩了许多坑.一开始直接安装还挺顺利但运行程序时总是提示libgtk2.0-dev和pkg-config没有安装,在安装这两个包的过程中也不顺 ...

  9. 关于jquery ajax跨域请求获取response headers问题

    背景:最近项目jwt用户认证方式,关于jwt本人就不再赘述,大家可自行百度. jwt token基本流程是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一 ...

  10. css3中的关键帧技术分析应用

    最近在研究网页加载进度效果的时候发现可以使用css3实现这个效果. 使用css3实现完全不需要图片,相比使用loading.gif的实现来说可能更快. 使用css3实现动态加载的效果,主要会涉及到几个 ...