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. I2C 读取总是 0xFF,但是 ACK 是正常的解决方法

    最近要读写 24C256,没有参考网上代码,自己撸了几个小时,总是不对,读取结果总是 0xFF,但是ACK的返回都是正确的,经过一番努力,终于找到问题所在了. 在芯片规格书里面时序图只有 START ...

  2. ActionBar+Fragment实现顶部标签页

    用ActionBar的TABS模式,和Fragment实现程序顶部的标签页切换. 一. MainActivity         public class MainActivity extends A ...

  3. HDU 1000 A + B Problem(指针版)

    A + B Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDU 3377 Plan

    Problem Description One day, Resty comes to an incredible world to seek Eve -- The origin of life. L ...

  5. 【Java学习笔记之七】java函数的语法规则总结

    函数的概述 发现不断进行加法运算,为了提高代码的复用性,就把该功能独立封装成一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这个段小程序即可,那么这种封装形形式的具体表现形式则称作函数. ...

  6. Codeforces Round #395 (Div. 2)(A.思维,B,水)

    A. Taymyr is calling you time limit per test:1 second memory limit per test:256 megabytes input:stan ...

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

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

  8. POI Sax 事件驱动解析Excel2007文件

    Excel2007版本的代码如下,本文主要是用于POI解析大文件Excel容易出现内存溢出的现象而提出解决方案,故此解决了大数据量的Excel文件解析的难度,在此拿出来贡献给大家,谢谢! 里面用到的相 ...

  9. HDU 1213 How Many Tables(模板——并查集)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 Problem Description Today is Ignatius' birthday ...

  10. nginx重启几种方法

    http://blog.csdn.net/zqinghai/article/details/71125045 ps -ef|grep nginx 平滑重启命令: kill -HUP 住进称号或进程号文 ...