zoukankan      html  css  js  c++  java
  • mysql explain详解

    id: 序号;实际表示优先级,值越大越先被执行。

     --------------------------------------------------------------

    select_type

    SELECT 语句的类型,可以有下面几种。

    SIMPLE:最简单的SELECT语句,没有使用UNION或子查询。

    PRIMARY:在嵌套查询中是最外层的SELECT语句,在UNION查询中是最前面的SELECT语句。

    UNION:UNION中第二个以及后面的SELECT语句。

    DERIVED:派生表,在FROM子句中的子查询语句(subquery in FROM clause)。

    UNION RESULT:一个UNION查询的结果。

    DEPENDENT UNION:顾名思义,首先需要满足UNION的条件,及UNION中第二个以及后面的SELECT语句,同时该语句依赖外部的查询。

    部分type说明:   从好到坏
    const: 优化成常量-主键在where条件列表
    eq_ref: 唯一性索引扫描
    ref: 非唯一性索引扫描
    range: 扫描部分索引,索引范围扫描
    index: 扫描整颗索引树
    ALL: 扫描全表
    -------------------------------------------------------------------------------------

    Extra

    Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,包含的信息很多,只选择几个重点的介绍下。

    Using filesort:
    MySQL有两种方式可以生成有序的结果,通过使用索引或者排序操作,当Extra中出现了Using filesort 说明MySQL使用了后者,但注意虽然叫filesort但并不是说明就是用了文件来进行排序,只要可能排序都是在内存里完成的。大部分情况下利用索引排序更快,所以一般这时也要考虑优化查询了。

    Using temporary:
    说明使用了临时表,一般看到它说明查询需要优化了,就算避免不了临时表的使用也要尽量避免硬盘临时表的使用。

    Using index:
    说明查询是覆盖了索引的,这是好事情。MySQL直接从索引中过滤不需要的记录并返回命中的结果。这是MySQL服务层完成的,但无需再回表查询记录。

    Using index condition
    这是MySQL 5.6出来的新特性,叫做“索引条件推送”。简单说一点就是MySQL原来在索引上是不能执行如like这样的操作的,但是现在可以了,这样减少了不必要的IO操作,但是只能用在二级索引上,详情点这里

    Using where:
    使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。

  • 相关阅读:
    SQL获取当天0点0分0秒和23点59分59秒方法
    全球唯一标识符 System.Guid.NewGuid().ToString()
    Js获取当前日期时间及其它操作
    MySQL日期函数与日期转换格式化函数大全
    访问者模式
    享元模式
    中介者模式
    职责链模式
    命令模式
    桥接模式
  • 原文地址:https://www.cnblogs.com/tilamisu007/p/9268972.html
Copyright © 2011-2022 走看看