Mysql Explain的使用

  • id:表示执行顺序

    相同的id执行顺序为从上到下

    不同的id执行顺序为从大到小

  • select_type:用于表示查询类型

    • SIMPLE:简单的select查询,查询中不包含子查询或union

    • PRIMARY:查询中包含任何复杂的子部分,最外层的查询则被标记为primary

    • SUBQUERY:在select或where列表中包含了子查询

    • DERVIED:在from列表里面包含的子查询被标记为DERVIED(衍生),mysql执行完子查询之后会把结果放在一个临时表里面,DERVIED后面的数字表示是由哪个表查询后衍生出来的

    • UNION:

      若第二个select出现在union之后,则会被标记为union

      若union包含在from子句的子查询中,外层select将被标记为DERVIED

    • UNION RESULT:从UNION表获取结果的SELECT

  • table 表名

  • type:访问类型列表

    最好到最差如下:system>const>eq_ref>ref>range>index>all

    一般查询最好能达到ref级别,最少要达到range级别

    • const:出现于主键索引或者唯一的(仅查出一条)

      select * from user where id = 1;
    • eq_ref:对于每个索引键,表中只有一条记录与之匹配

    • ref:非唯一性索引扫描,返回匹配所有单独值的所有行

      • 比如以部门作为索引

        查研发部,有两百人,则查研发部的这条语句就是ref级别的

        查总裁部,只有一个人,则查总裁办的这条语句就是eq_ref级别的

    • range:只检索给定范围的行,使用一个索引来选择行(查出来的数据要是应只有一条)

      key列显示使用了哪个索引,一般出现于范围查询,例如between,in等

    • index:index和all都是全表扫描,但是index只遍历索引

    • all

  • possible_keys:查询中可能可以用到的索引

  • key:实际上用到的索引

  • key_len:表示索引中使用的字节数,通过该列计算查询中使用的索引的长度,在不损失精确性的情况下,长度越短越好

  • ref:显示索引的哪一列被使用了,如果可能的话,是一个常熟,哪些列或者常量被用于查找索引列上的值

  • rows :根据表统计信息以及索引的选用情况,大致估算出找到所需的记录所需读取的行数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值