当前位置: 首页 > news >正文

MySQL执行计划(explain)

MySQL执行计划(explain)

1.什么是执行计划

2.如何分析执行计划

在这里插入图片描述

执行计划一共有12列,每一列都有着特殊的含义,接下来我们逐一分析

id

select语句的查询顺序,包含一组数字,如果数字相同则从上到下,如果数字不同则从大到小。

select_type

查询的类型,可以为以下任意一种

  • SIMPLE 简单SELECT语句,查询中不包含子查询或者union
  • PRIMARY 查询中包含任何复杂的子部分,最外层被标记为primary
  • UNION 若第二个select出现在union之后,则被标记为union;若union包含在from子句的子查询中,外层select将被标记为derived
  • UNION RESULT UNION 的结果
  • SUBQUERY 在select 或 where列表中包含了子查询
  • DERIVED 在from列表中包含的子查询被标记为derived(衍生),mysql或递归执行这些子查询,把结果放在临时表里

table

查询所用的表

partitions

如果查询是基于分区表的,则显示查询访问的分区

type

访问类型

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

  • system 表仅有一行(=系统表)
  • const 表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次
  • eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。
  • ref 非唯一性索引扫描,返回匹配某个单独值的所有行
  • range 只检索给定范围的行,使用一个索引来选择行。一般就是在where语句中出现了bettween、<、>、in等的查询。这种索引列上的范围扫描比全索引扫描要好
  • index 该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。
  • ALL 遍历全表以找到匹配的行。

possible_keys

查询涉及到的字段上存在索引,则该索引将被列出,但不一定被查询实际使用

key

显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。

key_len

表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用长度,理论上长度越短越好。key_len是根据表定义计算而得的,不是通过表内检索出的

ref

显示使用哪个列或常数与key一起从表中选择行。

rows

显示MySQL认为它执行查询时必须检查的行数。

filtered

显示了通过条件过滤出的行数的百分比估计值。

Extra

  • Distinct MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。
  • Using filesort mysql对数据使用一个外部的索引排序,而不是按照表内的索引进行排序读取。也就是说mysql无法利用索引完成的排序操作成为“文件排序”
  • Using temporary:使用临时表保存中间结果,也就是说mysql在对查询结果排序时使用了临时表,常见于order by 和 group by
  • Using index 从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。
  • Using where WHERE 子句用于限制哪一个行匹配下一个表或发送到客户
  • Using join buffer使用了链接缓存
  • Select tables optimized away: MySQL根本没有遍历表或索引就返回数据了,表示已经优化到不能再优化了
  • Impossible WHEREwhere子句的值总是false,不能用来获取任何元祖
http://www.lryc.cn/news/43760.html

相关文章:

  • 思必驰回复第二轮审核问询,如何与科大讯飞、阿里巴巴“虎口夺食”?
  • 基于Spring、SpringMVC、MyBatis的汽车租赁系统设计
  • 读《刻意练习》后感,与原文好句摘抄
  • 华为OD机试用java实现 -【选座位】
  • 国产蓝牙耳机怎么挑选?口碑最好的国产蓝牙耳机
  • seaborn从入门到精通03-绘图功能实现02-分类绘图Categorical plots
  • ❤️独特的算法❤️:一文解决编辑距离问题
  • 三次样条样条:Bézier样条和Hermite样条
  • Redis面试题 (2023最新版)
  • 基于springboot实现家乡特色食品景点推荐系统【源码+论文】分享
  • Spring MVC 启动之 HandlerMapping
  • 基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)
  • 【Linux系统编程】5.vim基本操作命令
  • 主流机器学习平台调研与对比分析
  • 作业帮基于明道云开展的硬件业务数字化建设
  • 位图及布隆过滤器的模拟实现与面试题
  • 在 Python 中将天数添加到日期
  • vue3知识点
  • 一行代码生成Tableau可视化图表
  • 链表——删除元素或插入元素(头插法及尾插法)
  • oracle容器的使用
  • 基于springboot会员制医疗预约服务管理信息系统演示【附项目源码】
  • GoogleAdsense国内加载慢怎么解决?
  • 【MySQL专题】03、性能优化之读写分离(MaxScale)
  • Redis7高级之BigKey(二)
  • flex弹性盒子
  • [Java Web]Cookie | 一文详细介绍会话跟踪技术中的Cookie
  • 这可能是2023最全的Java面试八股文,共计1658页,Java技术手册的天花板
  • 字节流及存放本地文件上传和下载文件
  • 【翻译】下一步:Go 泛型