mysql_explain执行计划字段解析

【README】

本文对 explain打印的执行结果的字段进行解析;

本文总结自:

MySQL :: MySQL 8.3 Reference Manual :: 10.8.2 EXPLAIN Output Formaticon-default.png?t=N7T8https://dev.mysql.com/doc/refman/8.3/en/explain-output.html

列名含义
id选择标识
select_type选择类型

table

输出结果的表
parition分区
type访问方式或连表类型(单表也算连表)
possible_keys可能使用的索引
key实际使用的索引
key_len实际使用索引的长度
ref与索引比较的查询列                
rows扫描行数
filtered按表条件过滤出的行的百分比(占全表总行数)
extra其他信息


【1】查看执行计划

由上图可以看到,执行计划的列名如下:

  • id: 执行顺序(id越大,越先执行;id相等,则按照从上到下顺序执行)
  • select_type:查询类型;
    • SIMPLE:简单查询;
    • PRIMARY:最外层 SELECT;
    • UNION:包含union合并子句的合并查询;
    • MATERIALIZED:物化子查询;
    • SUBQUERY: 子查询中的第1个SELECT;
    • ...more;
  • table:输出结果的表;
  • parttion:分区;
  • type:表的访问方式(性能从差到好)
    • ALL:全表扫描(磁盘);
    • index:full index scan ,全索引树扫描;
    • range:基于索引树的范围查询;
    • ref:普通索引扫描;
    • eq_ref:唯一索引扫描(包括主键索引);
    • const:常量;
    • system:是const的特例,当表只有一行时,使用system;
    • NULL: 空查询,不用扫描表与索引,直接返回结果;如查询索引列的最小值;
  • possible_key: 可能使用的索引名;
  • key:实际使用的索引名;
  • key_len:索引使用的字节数(最大可能长度,非实际);
  • ref: 与索引列比较的列名(请求sql中的);
  • row:扫描行数;
  • filtered: 条件过滤的行百分比;
  • extra:其他信息;
    • using where :表明mysql将通过 where条件筛选存储引擎返回的记录;
    • using index: 扫描索引树;
    • using temporary:使用临时表;(当排序所需内存超过排序缓冲时,需要新建临时表);
    • using filesort:使用文件排序(无法通过索引完成排序,都会使用文件排序,无论在内存还是在磁盘排序);

【2】补充 select_type列表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值