文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL执行计划的示例分析

2024-04-02 19:55

关注

这篇文章主要介绍了MySQL执行计划的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

执行计划是什么?

执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。

一. 执行计划能告诉我们什么?

二. 执行计划中的内容

MySQL执行计划的示例分析

SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作

1. ID列

演示

MySQL执行计划的示例分析

可以看到上面的执行计划返回了3行结果,id列的值可以看作是SQL中所具有的SELECT操作的序号

由于上述SQL中只有一个SELECT,所以id全为1,因此,我们就要按照由上至下读取执行计划

按照我们的SQL语句,我们会认为执行顺序是a,b,c,但是通过上图可以发现,Mysql并不是完成按照SQL中所写的顺序来进行表的关联操作的

执行对表的执行顺序为a,c,b,这是由于MySQL优化器会根据表中的索引的统计信息来调整表关联的实际顺序

2. SELECT_TYPE列

含义
SIMPLE不包含子查询或是UNION操作的查询
PRIMARY查询中如果包含任何子查询,那么最外层的查询则被标记为PRIMARY
SUBQUERYSELECT 列表中的子查询
DEPENDENT SUBQUERY依赖外部结果的子查询
UNIONUnion操作的第二个或是之后的查询的值为union
DEPENDENT UNION当UNION作为子查询时,第二或是第二个后的查询的select_type值
UNION RESULTUNION产生的结果集
DERIVED出现在FROM子句中的子查询

3. TABLE列

包含以下几种结果:

输出去数据行所在表的名称,如果表取了别名,则显示的是别名
<union M,N>: 由ID为M,N查询union产生的结果集
<derived N>/<subquery N> :由ID为N的查询产生的结果

4. PARTITIONS列:

查询匹配的记录来自哪一个分区
对于分区表,显示查询的分区ID
对于非分区表,显示为NULL

5. TYPE列

按性能从高至低排列如下:

含义
system这是const联接类型的一个特例,当查询的表只有一行时使用
const表中有且只有一个匹配的行时使用,如对主键或是唯一索引的查询,这是效率最高的联接方式
eq_ref唯一索引或主键索引查询,对应每个索引键,表中只有一条记录与之匹配
ref非唯一索引查找,返回匹配某个单独值的所有行
ref_or_null类似于ref类型的查询,但是附加了对NULL值列的查询
index_merge该联接类型表示使用了索引合并优化方法
range索引范围扫描,常见于between、>、<这样的查询条件
indexFULL index Scan 全索引扫描,同ALL的区别是,遍历的是索引树
ALLFULL TABLE Scan 全表扫描,这是效率最差的联接方式

6. Extra列

包含MySQL如何执行查询的附加信息

含义
Distinct优化distinct操作,在找到第一个匹配的元素后即停止查找
Not exists使用not exists来优化查询
Using filesort使用额外操作进行排序,通常会出现在order by或group by查询中
Using index使用了覆盖索引进行查询
Using temporaryMySQL需要使用临时表来处理查询,常见于排序,子查询,和分组查询
Using where需要在MySQL服务器层使用WHERE条件来过滤数据
select tables optimized away直接通过索引来获得数据,不用访问表,这种情况通常效率是最高的

7. POSSIBLE_KEYS列

指出MySQL能使用哪些索引来优化查询

查询列所涉及到的列上的索引都会被列出,但不一定会被使用

8. KEY列

查询优化器优化查询实际所使用的索引

如果表中没有可用的索引,则显示为NULL

如果查询使用了覆盖索引,则该索引仅出现在Key列中

9. KEY_LEN列

显示MySQL索引所使用的字节数,在联合索引中如果有3列,假如3列字段总长度为100个字节,Key_len显示的可能会小于100字节,比如30字节,这就说明在查询过程中没有使用到联合索引的所有列,只是利用到了前面的一列或2列

10. Ref列

表示当前表在利用Key列记录中的索引进行查询时所用到的列或常量

11. rows列

12. Filtered列

三. 执行计划的限制

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL执行计划的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯