mysql之explain详解

explain

 Explain可以用来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。

explain重要属性分析

id

  操作表的顺序,id值越大,优先级越高。

select_type

  查询类型

类型含义
SIMPLE简单的查询,查询中不包含任务字查询和UNION查询
PRIMARY查询中若包含任何复杂的子部分,最外层查询为PRIMARY
SUBQUERY衍生查询,from列表中包含的字查询
UNION若第二个select出现在union之后,则被标记为union
UNION RESULTunion表获取的结果

type

  为了保证查询至少达到range级别。最好达到ref,否则的话,只能说明这条语句性能有待提高。
  system>const>eq_ref>ref(最好能达到)>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL

system:表里只有一行记录(等于系统表)。
const:通过索引一次就找到了,主键索引或者唯一索引。
eq_ref:在连接查询时,如果被驱动表是通过主键或者唯一二级索引列等值匹配的方式进行访问的,则对该被驱动表的访问方法就是 eq_ref。这可能是在 const 之外最好的联接类型了。
ref:不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行;表示所有具有匹配的索引的行都被用到。
range索引范围内查找between、>,<,in,>=, <=
index全索引树扫描
all全表扫描

possidble_key:

可能使用的索引

key:

显示使用的索引,如果没有使用,则显示NULL

###key_len:
索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精度的情况下,长度越短越好。key_len显示的值为索引字段的最大长度,并非实际长度,即key_len根据表定义计算而得,不是通过表内检索出的。

not null 会额外占用一个字节;
varchar 会额外占用两字节存储长度;

extra:额外重要信息

1、Using filesort 查询需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。对数据使用一个外部的索引排序。
2、Using temporary 查询需要优化了。表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by
3、using join buffer : 表明使用了连接缓存, join次数太多了可能会出现
4、Using index:使用覆盖索引的时候就会出现,不需要回表查询
5、Using where(mysql5.6:using index condition):在查找使用索引的情况下,需要回表去查询所需的数据
6、using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据
6、impossible where:这个值强调了where语句会导致没有符合条件的行(通过收集统计信息不可能存在结果)。
7、Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值