阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SQL优化 MySQL版 -分析explain SQL执行计划

373次阅读
没有评论

共计 1351 个字符,预计需要花费 4 分钟才能阅读完成。

首先我们先创建一个数据库,数据库中分别写三张表来存储数据;

course: 课程表

teacher: 教师表

teacherCarid: 教师证表

SQL 优化 MySQL 版 - 分析 explain SQL 执行计划SQL 优化 MySQL 版 - 分析 explain SQL 执行计划 SQL 优化 MySQL 版 - 分析 explain SQL 执行计划

现在我把这三张表连起来查,查询条件:查询课程编号为 2 或教师证编号为 3 点老师信息;

通过这个例子,我们就可以把 explain 里面的参数一个一个的讲讲:

首先这 个条件的主干是查询老师信息

sql 语句:select t.* From teacher t INNER JOIN course c INNER JOIN teachercarid te WHERE t.tid = c.cid AND t.tcid = te.tcid AND (c.cid = 2 or te.tcid = 3);

执行结果:

SQL 优化 MySQL 版 - 分析 explain SQL 执行计划

SQL 语句很简单,我们不关心这个,我们关心的是在它前面加 explain

explain select t.* From teacher t INNER JOIN course c INNER JOIN teachercarid te WHERE t.tid = c.cid AND t.tcid = te.tcid AND (c.cid = 2 or te.tcid = 3);

执行看结果:

SQL 优化 MySQL 版 - 分析 explain SQL 执行计划

先看 id:

id 此时此刻都是 1,它们都对应我们的表 te 是我们的教师证表 t 就是教室表 c 是课程表

由此可见,我们编写的 SQL 语句它底层是先执行教师证表的,然后执行教室表,最后再执行课程表;

那这是为什么呢?

我们来分析一下数据:

course: 课程表 有三条数据

teacher: 教师表 有三条数据

teacherCarid: 教师证表 有四条数据

难道是数据越少就先执行谁?我们不妨来做个试验看看,我再加几条数据:

现在我们的数据变更为:

course: 课程表 有三条数据

teacher: 教师表 有四条数据

teacherCarid: 教师证表 有六条数据;

我们再看它的执行计划:

SQL 优化 MySQL 版 - 分析 explain SQL 执行计划

通过试验我们发现,确实谁少就先执行谁 ,但是我我们却发现,表的执行顺序是因数量的个数改变而改变,那它的原因是什么呢? 为什么表的执行顺序会跟随个数而改变呢

笛卡尔积

我们现在假设 a b 两张表,a 里面有三条数据,b 里面有六条数据,最后他俩相乘 = 18;

我们假设现在有 a b c 三张表,第一张表 a 是三条数据 第二张表是 3 条数据第三表的数据是 4,那它们的笛卡尔积 2*3 = 6 6 再 *4 = 24;

这个时候我们换一下位置 a 是四条数据 b 是三条数据 c 是两条数据,我们再来算一下它们的笛卡尔积:3*4 = 12 *2 = 24;

我们发现两者结果都没有变,但是中间结果变了,第一次计算笛卡尔积时 第一次计算 2 *3 =6,第二次计算笛卡尔积时 3 *4 = 12,因为 6 比 12 小索所以它就先执行;

为什么在图上,c 先执行的原因是 c * t (3*4 = 12)te 是 6, 所以比较大,就向后放;

结论:数据小的表,会优先查询;

ID 值越大越优先执行

id 值相同,就从上往下依次执行,如果不相同,那就从下往上执行,因为 id 值越大,它就越往下排列;

Select_type

PRIMARY: 包含查询 SQL 中的子查询(最外层)

SUBQUERY: 包含子查询 SQL 中的子查询(非最外层)

Simple: 简单查询(一个 SQL 语句里面不包含子查询,union)都是简单查询

derived: 衍生查询 触发子衍生查询只有两种:

1. 在 from 子查询中,只有一张表

2.在 from 子查询中如果有两张表,比如 tablie1 union table2,则 table1 就是衍生查询;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1351字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802122
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel面板+Halo助你轻松打造个人/企业内容中心

开源神器组合!1Panel 面板 +Halo 助你轻松打造个人 / 企业内容中心 前言 大家好,我是星哥,之前...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...