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. mysql 数据库 内容的增删改查

    /*所有字段插入值*//*注意插入值数目要与字段值一致*/INSERT INTO student VALUES(1,'熊大','123','2019-10-18',1200);INSERT INTO ...

  2. python2与python3编码(练习)

    #_author:来童星#date:2019/12/9import jsons='star'a=s.encode('utf8')print(s,type(s))# star <class 'st ...

  3. Perl 数据类型

    Perl 数据类型 Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型. Perl 有三个基本的数据类型:标量.数组.哈希.以下是这三种数据类型的说明: ...

  4. springboot集成websocket实现向前端浏览器发送一个对象,发送消息操作手动触发

    工作中有这样一个需示,我们把项目中用到代码缓存到前端浏览器IndexedDB里面,当系统管理员在后台对代码进行变动操作时我们要更新前端缓存中的代码怎么做开始用想用版本方式来处理,但这样的话每次使用代码 ...

  5. js日常总结

    1.html如何引入css和js文件 css:<link rel="stylesheet" href="css/index1.css(这是我的文件的地址)" ...

  6. Duilib中各个类的简单介绍

    DirectUI意为直接在父窗口上绘图(Paint on parent dc directly).即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上.微软的“D ...

  7. eclipse+terminal

    eclipse 怎么安装terminal插件   1 首先打开eclipse,找到help菜单,点击Eclipse Marketplace. 2 在search框里输入Terminal,点击Go查找. ...

  8. 小tips: zoom和transform:scale的区别

    小tips: zoom和transform:scale的区别 转自 张鑫旭 前端大神 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://w ...

  9. 16.ajax_case06

    # 抓取华尔街见闻实时快讯 # https://wallstreetcn.com/live/global?from=navbar import requests import json header ...

  10. angularJs FileUpload插件上传同一文件无效问题记录

    参考:https://blog.csdn.net/qq_34829447/article/details/83780392 问题:使用FileUpload插件进行文件上传时,发现无法上传与上个文件相同 ...