MYSQL优化器会对客服端发送的SQL语句进行优化,优化后的SQL语句再被MYSQL执行。然后我们在优化SQL的时候,怎么获取到MYSQL优化后执行语句呢。

EXPLAIN select *
from sys_system s
INNER JOIN sys_organ o ON s.system_code=o.system_code; SHOW WARNINGS;

执行了上述语句后,可以看到结果如下图:

将Message复制下来后查看:

select `db_jc`.`s`.`id` AS `id`,
`db_jc`.`s`.`system_code` AS `system_code`,
`db_jc`.`s`.`system_name` AS `system_name`,
`db_jc`.`s`.`state` AS `state`,
`db_jc`.`s`.`description` AS `description`,
`db_jc`.`o`.`id` AS `id`,
`db_jc`.`o`.`system_code` AS `system_code`,
`db_jc`.`o`.`organ_code` AS `organ_code`,
`db_jc`.`o`.`organ_name` AS `organ_name`,
`db_jc`.`o`.`state` AS `state`,
`db_jc`.`o`.`memo` AS `memo`,
`db_jc`.`o`.`creator_name` AS `creator_name`,
`db_jc`.`o`.`creator_id` AS `creator_id`,
`db_jc`.`o`.`create_time` AS `create_time`,
`db_jc`.`o`.`updater_name` AS `updater_name`,
`db_jc`.`o`.`updater_id` AS `updater_id`,
`db_jc`.`o`.`update_time` AS `update_time`
from `db_jc`.`sys_system` `s` join `db_jc`.`sys_organ` `o`
where (`db_jc`.`o`.`system_code` = `db_jc`.`s`.`system_code`);

MYSQL重构的查询如上图。

在学习《高性能MySql》这本书的时候,书中说到用EXPLAIN EXTENDED后执行SHOW WARNINGS,可以获得重构后的查询。

执行后:

红色圈注里描述 EXTENDED目前已经被MYSQL弃用。再之后的版本中将会被删除。

我这边用的MYSQL是5.7.18-log版本。

总结:在我们对SQL进行优化的时候,了解MYSQL重构后的查询还是很有必要的,可以帮我们了解我们写下的SQL最后是怎么执行的。

mysql查看执行计划重构后的查询的更多相关文章

  1. Mysql查看执行计划-explain

    最近生产环境有一些查询较慢,需要优化,于是先进行业务确认查询条件是否可以优化,不行再进行sql优化,于是学习了下Mysql查看执行计划. 语法 explain <sql语句>  例如: e ...

  2. Mysql查看执行计划

    EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...

  3. MySQL 查看执行计划

    MySQL 使用 explain + sql 语句查看 执行计划,该执行计划不一定完全正确但是可以参考. EXPLAIN SELECT * FROM user WHERE nid = 3; selec ...

  4. 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询

    MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...

  5. MySQL 使用explain查看执行计划

    使用explain查看执行计划, 下面是针对这两条语句进行分析,其查询结果是一样的. EXPLAIN select n.id,n.title from info n inner join info_t ...

  6. mysql explain extended 查看 执行计划

    本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 1. explain 可以查看 ...

  7. MYSQL EXPLAIN执行计划命令详解(支持更新中)

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所 ...

  8. hive高阶1--sql和hive语句执行顺序、explain查看执行计划、group by生成MR

    hive语句执行顺序 msyql语句执行顺序 代码写的顺序: select ... from... where.... group by... having... order by.. 或者 from ...

  9. Mysql explain执行计划

    EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...

随机推荐

  1. java变量和数据类型

    变量 数据类型  变量名  =  数据值: 注意事项: 变量定义后可以不赋值,使用时再赋值.不赋值不能使用 变量使用时有作用域的限制. 变量不可以重复定义 数据类型转换 自动类型转换  范围大的数据类 ...

  2. CF 1063B Labyrinth

    传送门 解题思路 看上去很简单,\(bfs\)写了一发被\(fst\)...后来才知道好像一群人都被\(fst\)了,这道题好像那些每个点只经过一次的传统\(bfs\)都能被叉,只需要构造出一个一块一 ...

  3. 20175323《Java程序设计》第五周学习总结

    教材学习内容总结 第五章的知识框架总结 代码托管:https://gitee.com/ruirui_yummy/java-besti-20175323 代码提交过程截图 代码量截图 学习进度条 代码行 ...

  4. 同步异步,异步回调,线程队列,线程时间Event

    同步异步-阻塞非阻塞 阻塞-非阻塞 指的是程序的运行状态 阻塞:当程序执行过程中遇到了IO操作,在执行IO操作时,程序无法继续执行其他代码,称为阻塞. 非阻塞:程序在正常运行没有遇到IO操作,或者通过 ...

  5. C#winform解析marc显示在datagridview中以及marc卡片显示

    结果显示:marc显示: 卡片显示: 程序一个类: public class MARC { #region 界面上要显示的元素 public string ztm = "";//正 ...

  6. deployment资源

    目的:用rc在滚动升级之后,会造成服务访问中孤单,于是k8s引入了deploymentziyuan 创建deployment vim k8s_deploy.yml apiVersion: extens ...

  7. 3列滚动抽奖 jquery.slotmachine

    效果图: 需引入js文件: <script src="js/jquery-3.2.0.js"></script> <script src=" ...

  8. django汉化

    汉化admin后台管理站点 修改settings文件(将上表格内容改变为下表格): LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' LANGUAGE_CODE = ...

  9. JQ实现全选、全不选

    代码: <table class="table myTable table-hover"> <thead> <tr> <th> &l ...

  10. [记]Cordova安装插件选择插件版本

    在项目中可以使用 cordova plugin add [PLUGIN_ID] 這个命令安装一个cordova插件,这个命令好像是安装插件的最新版本.当需要通过cordova下载这个插件一个特定的版本 ...