MySQL 的执行计划

一、执行计划中的常用字段

1. id:select 语句的序号,id 相同时按顺序执行,id 不同时,id 值越大的,优先级越高,越先执行

2. select_type:查询的类型,常见的有 SIMPLE、PRIMARY、SUBQUERY、UNION、DERIVED、UNION RESULT

3. table:查询用到的表

4. type:查询执行的类型

  • 从性能最优到最差的排序:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
  • const:表中最多只有一行匹配的记录,只需要一次查询,常见于主键和唯一索引
  • range:索引范围查询
  • index:遍历整棵索引树
  • ALL:全表扫描,性能最差,要避免

5. key:查询时实际用到的索引

6. rows:估算的所需读取的记录或行数,越小越好

7. Extra:查询的额外信息

  • Using index 表示使用了索引覆盖,不用回表效率高
  • Using index condition:索引下推(先判断联合索引包含的字段是否符合条件,先不发给 MySQL 的 server 层,先在引擎层过滤不符合条件的记录
  • Using where:使用了 Where 子句进行条件过滤,常见于没用到索引的场景
  • Using filesort:排序时使用了外部的索引排序❓没有使用表内的索引❓有什么区别吗
  • Using temporary:需要创建临时表来保存查询到的结果,常见于 order by 和 group by

二、如何优化查询效率

1. 通过 key 字段查看使用索引的情况,如果 key = null 表示没有使用索引,考虑增加索引或者使用已有索引来查询

2. 避免 select * 全表查询(type = ALL),使用索引覆盖优化(extra = Using index)

3. 尽可能使用简单的 Where 子句(select_type = SIMPLE),避免使用子查询(select_type = SUBQUERY)

4. 当 Extra 列包含 Using filesort 或 Using temporary 时,MySQL 的性能可能会存在问题,需要尽可能避免。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值