explain分析执行计划

使用explain 分析sql 语句,能够显示mysql的执行计划,了解mysql是如何执行sql。为我们如何进行sql优化提供重要的参考信息

#学生表
create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
#课程表
create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
#教师表
create table Teacher(TId varchar(10),Tname varchar(10));
#成绩表
create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));

使用方法

在需要执行的sql语句前加上explain,执行
在这里插入图片描述

各字段含义

id

mysql 会一条查询sql 语句中的每一个子查询提供一个id号

  • id 号大的先执行
# 查询老师教的课程
explain select * from Teacher inner join Course on Course.TId = Teacher.TId

在这里插入图片描述

  • id 号相同的从上往下执行
#查询课程 cid = 1 得分最高的学生信息
explain select Student.* from SC INNER JOIN Student On Student.SId=SC.SId where SC.CId=1 and SC.score = (select score from SC where Cid=1 order by score desc limit 1) 

在这里插入图片描述

select_type
  • SIMPLE 不包含子查询可关联查询
  • prmary 包含子查询的最外层查询
  • subquery查询子句位于where条件中
#查询课程 cid = 1 得分最高的学生ID号
explain  select SId from SC  where CId=1 and SC.score = (select score from SC where Cid=1 order by score desc limit 1) 

在这里插入图片描述

  • derived 派生查询,查询子句位于from中
  • union ,union查询后面的查询语句
  • union result,union查询合并生成的临时表
tabel

查询语句的数据来自那一张表

  • 实际存在的一张表
  • derivedN 通过ID为N的派生查询生成的临时表
  • union(a,b) ID为a和b查询结果进行union操作后生成的表
partition

行数据来自那些分区

type

查询类型,mysql如何对表数据进行访问

  • system 对只有一行数据的表进行查询
  • count 使用主键/唯一键对表进行等值查询
  • ref_ef 进行表自然链接查询,链接使用的字段 是 从表的主键/唯一键
  • ref 使用普通键进行等值查询,返回多条数据
  • range 范围扫描索引
  • index 全扫描索引
  • all 全表扫描
    性能逐渐降低
possible_keys

列出查询可能使用到的索引

key

列出实际使用的索引,mysql基本上只能使用一个索引

key_len

使用的索引长度
这个数值不一定是实际的索引长度,对应一个组合索引,如果只有前几个字段有效,能组成最左列前缀,实际的索引长度是有效字段的总和。

ref

在where 筛选条件中,索引字段的数值类型(也就是等号右边的数值是什么),可以是一个常量或其他表字段

rows

存储引擎扫描的行数

filtered

查询结果的行数 与 存储引擎扫描的行数 比值,越接近1,性能越好。

Extra

额外的一些信息

  • use index 使用到覆盖索引
  • use filesore 使用到文件排序
  • use temporary 使用到临时表
  • use where 需要在mysl服务器层进行筛选
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值