https://dev.mysql.com/doc/internals/en/optimizer-tracing.html

首先我们要启用优化器的追踪(默认是关闭的):

SHOW VARIABLES LIKE 'optimizer_trace';
set optimizer_trace='enabled=on';

注意开启这开关是会消耗性能的,因为它要把优化分析的结果写到表里面,所以不要轻易开启,或者查看完之后关闭它(改成off)。

注意:参数分为session 和global 级别。

接着我们执行一个SQL 语句,优化器会生成执行计划:

select t.tcid from teacher t,teacher_contact tc where t.tcid = tc.tcid;

这个时候优化器分析的过程已经记录到系统表里面了,我们可以查询:

select * from information_schema.optimizer_trace\G

它是一个JSON 类型的数据,主要分成三部分,准备阶段、优化阶段和执行阶段。

expanded_query 是优化后的SQL 语句。

considered_execution_plans 里面列出了所有的执行计划。

分析完记得关掉它:

set optimizer_trace="enabled=off";
SHOW VARIABLES LIKE 'optimizer_trace';

优化器是怎么得到执行计划的?相关推荐

  1. mysql+优化器+软解析_MySQL执行计划 - osc_93u9qofu的个人空间 - OSCHINA - 中文开源技术交流社区...

    执行计划,SQL语句过来,会先解析,词法解析,语法解析,之后生成执行计划,计划上会算出使用全盘扫秒还是依靠索引, mysql不缓冲执行计划,oracle有 体系结构 1.优化器--->执行计划 ...

  2. 最全MySQL8.0实战教程 22 MySQL的优化 22.4 explain分析执行计划 22.4.1 基本使用

    最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 22 MySQL的优化 22.4 explain分析执行计划 22.4.1 基本使用 [黑马程序员MySQL知识精讲+mysql实 ...

  3. SQLSERVER优化SQL的方法(执行计划)

    有个小伙伴问起,关于SQL语句怎么知道写的好不好,本人还是单独写一篇文章,以常见的一个GROUP BY为例,了解如何去对SQL语句是怎么执行与怎么做优化吧 先做准备工作,在test数据库里面新建一张u ...

  4. 优化SQL步骤—— explain分析执行计划 (explain 之 id)

    explain分析执行计划 环境准备 explain 之 id

  5. 【XLA】一、【构图阶段】图优化器的注册和执行

    一.注册: 在tensorflow/compiler/jit/jit_compilation_pass_registration.cc对jit相关的优化器进行统一的注册.举例: REGISTER_OP ...

  6. mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询

    根据表,列,索引的详细信息以及WHERE子句中的条件,MySQL优化器考虑了许多技术来有效执行SQL查询中涉及的查找.无需读取所有行即可执行对巨大表的查询:可以执行涉及多个表的联接,而无需比较行的每个 ...

  7. MySQL 优化 —— EXPLAIN 执行计划详解

    引言 本博客大部分内容翻译自MySQL 官网 Understanding the Query Execution Plan 专题.另外有一些补充,则来自于网课以及<高性能MySQL(第三版)&g ...

  8. 查看正在执行的事务_看懂sql_trace--分析执行计划及CBO行为

    概述 Oracle数据库排查问题.实验测试.优化的时候一般都会用到trace文件来分析,这里面就涉及到sql_trace跟10046事件了,下面分别做一下介绍. SQL_TRACE SQL_TRACE ...

  9. SQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

最新文章

  1. SAP QM 检验批号码跳号问题之对策
  2. Hadoop集群(四) Hadoop升级
  3. 【ClickHouse】ClickHouse 同步 MySQL 数据库
  4. C++ Primer Plus学习(七)——函数简介
  5. 菜鸟教程Python100例-笔记
  6. android超大屏触摸设备,世界上最大的安卓Android平板电脑具有98英寸的屏幕
  7. 民情二维码:居民诉求一个码收集
  8. 逻辑谬误_大规模分布式计算的谬误
  9. 华为服务器型号分类,华为服务器型号介绍
  10. html如何设置导航栏例子,CSS 导航栏
  11. IDEA 2021.2.3添加GitHub账户并提交代码到GitHub
  12. DHTMLX基本用法
  13. 爬虫四步曲大神一步一步来教你,使用python抓取网页数据并储存
  14. [Linux]线程概念_线程控制(线程与进程的区别与联系 | 线程创建 | 线程等待 | 线程终止 | 线程分离 | LWP)
  15. 大型建筑公司如何实现数字化转型
  16. Python中的时间戳具体是什么
  17. vscode 护眼主题 界面UI配色 语法配色
  18. 自定义 RPC框架4——RMI+Zookeeper实现RPC框架
  19. 网约车大战重来:易到回归降佣金,美团入局每单补贴超20元
  20. Axure绘制流程图

热门文章

  1. dropdownlist 实现无限级树形菜单
  2. 教你增加网站反向链接的7大法门和12奇招
  3. Ext JS - Combobox 加载下拉框数据 级联下拉框
  4. 机器学习(四)决策树
  5. 搜狗浏览器也可以直接安装Chrome插件,太棒了
  6. VMWare桥接、NAT和only-host三种模式
  7. Django——WEB三层架构与MVC
  8. 避免css中文字体在浏览器中解析成乱码
  9. zigbee cc2530 adc转换
  10. mysql 中模糊查询的四种用法介绍