explain简介

功能:表的读取顺序、数据读取操作类型、实际使用的索引、表之间的引用、使用优化器的行数

语法:explain <SQL>

字段:id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra。标红为重点

id:select 查询的序列号,表示查询select子句的顺序或者操作标的顺序,规则如下:

         id的越高就先执行

         id相同的情况下,执行顺序由上而下;

         如果是子查询,id的越高就先执行,id相同时按顺序执行

select_type

         有以下6种值

         SIMPLE:简单的select,不包含子查询、UNION

         PRIMARY:查询中若包含任何复杂查询,则最外层的查询为PRIMARY

         SUBQUERY:select后面的子查询

         DERIVED:from列表中的子查询,被标记为DERIVED

         UNION:若select出现在UNION之后,被标记为UNION;

                            若UNION出现在FROM后子查询中,外层SELECT被标记为DERIVED

         UNION RESULT:

table

type

         有8种值: ALL、index、range、ref 、eq_ref、const、system、NULL       

         优选顺序:system –const—eq_ref—ref—range—index--ALL

         一般来说,得保证查询至少达到range级别,最好能达到ref级别, 详细介绍如下:

         system:表只有一行记录(等于系统表),是const类型的特例,平时不会出现,可

忽略,没意义;

         const:表示通过索引一次就找到了,用于比较primary key、unque索引,因为只匹

配一行数据,所以很快将;

         eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用语

主键和唯一键扫描

         ref:唯一性索引扫描,返回匹配某个值的所有行

         range:

         index:Full Index Scan,只遍历索引树;通常比索引快,因为索引比数据小

         ALL:Full Table Scan(从硬盘中读取)  百万数据以上全表扫描需要优化

possible_keys:查询涉及到,但是却不一定涉及到的索引

key:实际使用到的索引;NULL—没有使用索引;

key_len:索引字段最大可能长度(字节数),并非实际长度;

ref : 显示索引的哪些列被使用了,可能出现的字段:库.表.字段.或者const

rows:每张表被优化器查询的行数

Extra:十分重要,不同版本信息不同,不会在其他列显示的信息,共有以下几种情况:

         Using Filesort:mysql会按照一个外部索引,而不是按照表内索引顺序进行读取,

快优化

         Using temporary:新建了内部临时表保存中间结果,常见于order bygroup by,数

据量大的时候比较影响性能

         Using index表示查询操作使用了convering index ,避免访问数据行,效果好

         Using where

         Using join buffer:  使用了连接缓存

         impossible where:  where子句的值为false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值