美文网首页MySQL
EXPLAIN 参数说明

EXPLAIN 参数说明

作者: mashen | 来源:发表于2017-08-02 11:48 被阅读0次

    EXPLAIN

    explain 用来查看sql语句执行时的相关参数信息 从而分析sql的性能

    -- 通过 EXPLAIN + SQL语句 ( 来查看sql执行时的相关信息 )
    EXPLAIN SELECT * FROM x_test WHERE x_name = 'mashen';
    

    结果:

    id select_type table partitions type possible_keys key ken_len ref rows filtered Extra
    1 SIMPLE x_name Null ref x_name x_name 30 const 3 100 Using where

    字段解释

    id:
    sql语句的标识符 如果为Null 则表示这个sql是其他行的联合结果

    select_type:

    select_type 值 说明
    SIMPLE 简单的查询(不包含子查询和union)
    PRIMARY 包含子查询或union最外层部分为PRIMARY
    UNION 在union第2个或者后面的sql为UNION 第一个为PRIMARY
    DEPENDENT UNION 使用UNION并使第2个或后面的查询同时依赖于外部查询
    UNION RESULT 在匿名临时表里检索
    SUBQUERY 子查询中第一个SELECT
    DEPENDENT SUBQUERY 子查询中第一个SELECT 同时依赖于外部查询
    DERIVED 子查询产生的临时表 FROM的表

    table:
    访问的表名称

    partitions:
    查询匹配的分区 NULL表示未进行分区

    type:
    访问类型

    type 值 说明 效率
    ALL 全表扫描 ( 最坏情况 ) 最慢
    index 和ALL一样只是通过索引树扫描 很慢
    range 范围扫描 当使用> < IN BETWEEN 这种范围表达式时 一般
    ref 通过索引访问( 高效的 ) 快速
    eq_ref 充分使用索引 ( 比ref还高效 ) 很快
    const 只有一个匹配的行所以该行的列中的值可以被其他优化器视为常量所以非常快 非常快
    system 该表只有一行(=系统表)这是const的特殊情况 最快

    possible_keys:
    当前有可能会用到的索引 ( 并非实际用到的 )

    key:
    实际用到的索引

    ken_len:
    查询所使用索引的长度

    ref:
    使用哪些列或常量和key一起去匹配结果行

    rows:
    查询结果是必须要检查的行数

    filtered:
    在表中已条件过滤数据的百分比

    Extra:
    Extra


    MySQL 5.7 参考手册 - EXPLAIN

    相关文章

      网友评论

        本文标题:EXPLAIN 参数说明

        本文链接:https://www.haomeiwen.com/subject/walelxtx.html