[MySQL 5.6] 初识5.6的optimizer trace
mysql> set session optimizer_trace=’enabled=on';
| | select * from sbtest1 order by k limit 3 | {   “steps”: [     {       “join_preparation”: {         “select#”: 1,         “steps”: [           {             “expanded_query”: “/* select#1 */ select `sbtest1`.`id` AS `id`,`sbtest1`.`k` AS `k`,`sbtest1`.`c` AS `c`, `sbtest1`.`pad` AS `pad` from `sbtest1` order by `sbtest1`.`k` limit 3″           }         ]       }     },     {       “join_optimization”: {         “select#”: 1,         “steps”: [           {             “table_dependencies”: [               {                 “table”: “`sbtest1`”,                 “row_may_be_null”: false,                 “map_bit”: 0,                 “depends_on_map_bits”: [                 ]               }             ]           },           {             “rows_estimation”: [               {                 “table”: “`sbtest1`”,                 “table_scan”: {                   “rows”: 986400,                   “cost”: 13741                 }               }             ]           },           {             “considered_execution_plans”: [               {                 “plan_prefix”: [                 ],                 “table”: “`sbtest1`”,                 “best_access_path”: {                   “considered_access_paths”: [                     {                       “access_type”: “scan”,                       “rows”: 986400,                       “cost”: 211021,                       “chosen”: true                     }                   ]                 },                 “cost_for_plan”: 211021,                 “rows_for_plan”: 986400,                 “chosen”: true               }             ]           },           {             “attaching_conditions_to_tables”: {               “original_condition”: null,               “attached_conditions_computation”: [               ],               “attached_conditions_summary”: [                 {                   “table”: “`sbtest1`”,                   “attached”: null                 }               ]             }           },           {             “clause_processing”: {               “clause”: “ORDER BY”,               “original_clause”: “`sbtest1`.`k`”,               “items”: [                 {                   “item”: “`sbtest1`.`k`”                 }               ],               “resulting_clause_is_simple”: true,               “resulting_clause”: “`sbtest1`.`k`”             }           },           {             “refine_plan”: [               {                 “table”: “`sbtest1`”,                 “access_type”: “table_scan”               }             ]           },           {             “reconsidering_access_paths_for_index_ordering”: {               “clause”: “ORDER BY”,               “index_order_summary”: {                 “table”: “`sbtest1`”,                 “index_provides_order”: true,                 “order_direction”: “asc”,                 “index”: “k”,                 “plan_changed”: true,                 “access_type”: “index_scan”               }             }           }         ]       }     },     {       “join_execution”: {         “select#”: 1,         “steps”: [         ]       }     }   ] } | ############################################################### 主要分为三个部分 join_preparation:SQL的准备阶段,sql被格式化 对应函数 JOIN::prepare 例如 * 被扩展开来 join_optimization:SQL优化阶段 对应函数JOIN::optimize join_execution:SQL执行阶段 对应函数:JOIN::exec | 
optimizer_trace有两个字段:
offset=-5,limit=5 将最近的5次trace打印出来
当offset小于0时,则会显示最新的-offset开始的limit个trace,也就是说,只显示新的trace
注意重设变量会导致trace被清空
mysql> show variables like ‘optimizer_trace_features';
原创文章,转载请注明: 转载自Simple Life
文章的脚注信息由WordPress的wp-posturl插件自动生成
[MySQL 5.6] 初识5.6的optimizer trace的更多相关文章
- 100% 展示 MySQL 语句执行的神器-Optimizer Trace
		在上一篇文章<用Explain 命令分析 MySQL 的 SQL 执行>中,我们讲解了 Explain 命令的详细使用.但是它只能展示 SQL 语句的执行计划,无法展示为什么一些其他的执行 ... 
- [转]细说MySQL Explain和Optimizer Trace简介
		在开发过程中,对每个上线的SQL查询指纹(query figerprint)的质量都应有估算:而估算DB查询质量最直接的方法,就是分析其查询执行计划( Query Execution Plan ,即Q ... 
- 【MySQL】使用 Optimizer Trace 观察SQL执行过程
		Optimizer Trace 是MySQL 5.6.3里新加的一个特性,可以把MySQL Optimizer的决策和执行过程输出成文本.输出使用JSON格式,便于程序分析和人类阅读. 使用方法 1) ... 
- MYSQL之数据库初识、安装详解、sql语句基本操作
		目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(Data ... 
- Linux(5)- MariaDB、mysql主从复制、初识redis
		一.MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ... 
- MySql系列之初识
		数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运 ... 
- MySQL数据库1初识MySQL
		目录 Mysql 一.数据库是什么? 二.为啥使用数据库?(*****) 三.数据库的分类(*****) 1.关系型数据库 2.非关系型数据库 3.关系型与非关系型区别: 四.数据库MySQL的架构 ... 
- MySQL使用入门--初识数据库
		MySQL使用入门 数据库概述 数据库是存放数据的仓库.在应用的开发中总是离不开数据的查询.处理.存储,例如图书管理系统就需要操纵和存储大量的数据.没有数据库之前我们使用文件存储数据,但是文件存储有很 ... 
- mysql 8.0 初识
		1 下载并安装mysql 8.0官网下载比较慢,这里选择163的镜像http://mirrors.163.com/mysql/Downloads/MySQL-8.0/下载版本mysql-8.0.14- ... 
随机推荐
- python之---类和实例
			类和实例: 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但 ... 
- Code First:如何实现一个主类中包含多个复类
			假设我们在程序中要用到的类的结构是这样的,这里比较特别的是B在A中出现了最少两次 public class B { [Key] public int Id { get; set; } public s ... 
- jsp EL表达式 字符串的比较
			jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ... 
- linux网络配置正确,能够ping通内网地址,无法打开外网网页
			在虚拟机里面装了linux后,发现内网能访问,外网访问不了. 首先确定网络配置没有问题,并且能够访问外网,通过以下方法进行确认: [root@localhost ~]# more /etc/sysco ... 
- CF_Lucky Sum
			幸运数字的定义是这样:仅含4和7且不比n小的数为n的幸运数字. 输入范围l,r要求输出这个范围内的数字的幸运数字之和. 代码: #include<stdio.h> #define N 10 ... 
- 17.2.1 Replication Implementation Details  复制实现细节:
			17.2 Replication Implementation 复制是基于master server 跟踪所有改变到他的数据库(更新,删除等等)在它的binary log. binary log 作为 ... 
- jboss项目迁移至WebLogic12
			1 weblogic 使用jtds-1.2.3.jar驱动链接MS SQL Server 2008的数据源配置 1.1 拷贝jtds-1.2.3.jar至D:\Oracle\Middleware\wl ... 
- 替换SQL Server字段中的换行符,回车符
			replace(string_expression , string_pattern , string_replacement) 第一个参数:要查找的字段. 第二个参数:要查找的字符. 第三个参数:要 ... 
- ARM学习笔记8——通用寄存器和存储器内容交换指令和软中断指令
			交换指令将一个存储单元内容与制定的寄存器内容相交换,交换指令为进程间同步提供了一种方便的解决途径.该指令产生一堆原子Load/Store操作,该操作发生在一个连续的总线操作中,在操作期间阻止其他任何指 ... 
- Hibernate criteria 混合sql语句多表关联时查询注意事项
			直接进入正题 假设有一个实体类 /** * 产品分类 */ public class ProductType{ @Id private String no;//编号 private String na ... 
