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. JavaScript数组forEach()、map()、reduce()方法

    1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式 2.  forEac ...

  2. (转)Docker之Compose服务编排

    转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...

  3. hdu_1014(竟然真的还有更水的)

    注意输出就没了... #include<cstdio> #include<cstring> using namespace std; int gcd(int a, int b) ...

  4. ubantu下su命令Authentication failure失败的解决方式

    Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许 su 到 root . 可以使用: sudo passwd 来重新设置root密码,后即可登陆root. ortonwu@ubu ...

  5. css之隐藏内容的方法

    css隐藏内容的方法有三种:即display:none.visibility:hidden.overflow:hidden. 1.display:none;的缺陷: 搜索引擎可能认为被隐藏的文字属于垃 ...

  6. 一键批量打印EXCEL、WORD文档

    一键批量打印EXCEL.WORD文档,本方法也可以打印同一个文档N份,可以批量打印A3.A4文档,包括单.双面打印等.希望能帮到广大朋友.请大家注重原创版权,不得在未经许可的下转载.传播,或者用来对同 ...

  7. cuda纹理内存的使用

    CUDA纹理内存的访问速度比全局内存要快,因此处理图像数据时,使用纹理内存是一个提升性能的好方法. 贴一段自己写的简单的实现两幅图像加权和的代码,使用纹理内存实现. 输入:两幅图 lena, moon ...

  8. Hadoop集群的JobHistoryServer详解(转载)

    Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map.用了多少个Reduce.作业提交时间.作业启动时间.作业完成时间等信息.默认情况下 ...

  9. 前端之CSS介绍--选择器

    一.CSS简介 介绍 css我们称呼层叠样式表(英文全称:Cascading Style Sheets).它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等 ...

  10. Python random模块(获取随机数)

    1.random.random 随机生成一个0到1的随机浮点数: 0 <= n < 1.0 In [2]: print random.random() 0.544824016934 2.r ...