explain mysql extra_mysql 查询优化 ~explain解读之extra解读

一 explain 常用状态

1 using filesort 常见于order by 字段 无法走索引造成,文件排序。需要注意优化,复杂条件可以选择建立联合索引进行优化

2 using join buffer size 常见于join连接,并且连接字段无法走索引时造成,缓存存储记录,BML优化,需要注意优化

3 using tempoary 常见于(分组排序,子查询,union等操作),需要形成临时表结果集,需要注意优化,需要注意,当应用到索引时,不一定出现

4 using index 覆盖索引,索引列可以覆盖所有的查询字段,不用回表读取数据文件,代表最优

6 Using index condition 应用了mysql的ICP特性

7 using where:需要回表操作,会增加IO问题,出现的情况特征

1 select查询的字段有非辅助索引和主键索引的其他值

2 select查询的条件有非辅助索引和主键索引的其他值

注意点

1 using where单独出现情况需要回表

8 using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据

1 select查询的字段都被(单/联合)索引覆盖,查询的条件只有(单/联合)索引,有一定几率出现联合,还有一定记录出现using index

注意点

1 using index & using where 不需要回表

2 两种情况的出现也和索引区分度有很大关系,不过效率肯定比单独出现using where强很多

9 Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式

10  Impossible WHERE noticed after reading const tables

官方文档描述 MySQL has read all const (and system) tables and notice that the WHERE clause is always false.

出现条件

1 主键或者唯一键的不存在的等值查询

2 通过profile 分析结果 我们丛植可以发现,sql被正常执行了.而且执行速度是非常快的,这个做下记录

11 Using intersect/Using union/Using sort_union 代表着应用到了多列索引(在执行计划的type列显示index_merge),这里要注意,和ICP特性不同,这个是将多列条件索引下推到innodb,而icp应用的是innodb层

特点

1 ICP的优化策略可用于range、ref、eq_ref、ref_or_null 类型的访问数据方法

2 当 SQL 使用覆盖索引时但只检索部分数据时,ICP 无法使用

3 不支持主建索引的ICP

4 mysql 5.6中不支持分区表的ICP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值