mysql explain

id:
查询的序号

select_type:
查询类型,比如简单查询
在这里插入图片描述
subquery举例:select * from goods where id in (select id from goods) ;
derived举例:select * from (select * from goods) as tmp ;
union, union result举例:select 3 union select 4;

table:
真实表名:select * from goods;
别名: select * from goods as tmp;
derived: select * from (select * from goods) as tmp

type:
索引发挥的作用如何,是指查询的方式,是分析"查数据过程"的重要依据。
1)all:意味着从表的第1行,往后,逐行做全表扫描,运气好不扫描到最后一行。
在这里插入图片描述
2)index:比all性能稍好一点
通俗的说:all扫描所有的数据行,相当于data_all, index扫描所有的索引节点,相当于index_all。有以下两种情况可能出现:

  • 索引覆盖的查询情况下,能利用索引数据,但利用不上索引查找,必须全索引扫描
    在这里插入图片描述
  • 利用索引来进行排序,但取出所有的节点
    select googs_id form goods order by goods_id desc;
    分析:没有加上where条件,就是取所有索引节点,同时,又没有回行,只取索引节点,经过所有索引节点。
    在这里插入图片描述

3)range:意思是查询时,能根据索引做范围的扫描
在这里插入图片描述
4)ref: 意思是指,通过索引可以直接引用到某些数据行
在这里插入图片描述
5)req_ref:是指通过索引列直接引用某1行数据
6)const,system,null 这3个分别指查询优化到常量级别,甚至不需要查询时间
一般按照主键来查询时,易出现const,system,或者直接查询某个表达式不经过表时出现null
在这里插入图片描述
在这里插入图片描述
prossible_keys:
可能用到的索引

key:
最终使用到的索引

key_len:
最终使用到的索引的长度

ref:
两表联查的有没有引用关系

rows:
估计本次的查询行数

extra:
1)index:是指用到了索引覆盖,效率非常高
explain SELECT city.CountryCode FROM city
-用到了索引数据而已,type是index

在这里插入图片描述
2)using where:是指光靠索引定位不了,还得where判断一下
explain SELECT city.CountryCode FROM city WHERE city.CountryCode = ‘AFG’
在这里插入图片描述
3)using temporary:是指用上了临时表,group by 和order by不同列时,或guoup by,order by别的表的列
4)using filesort:文件排序(文件可能在磁盘,也可能在内存)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值