otpimizer trace 表的神奇功效
标签: MySQL 是怎样运⾏的
对于MySQL 5.6以及之前的版本来说,查询优化器就像是⼀个⿊盒
⼦⼀样,你只能通过EXPLAIN语句查看到最后优化器决定使⽤的执
⾏计划,却⽆法知道它为什么做这个决策。这对于⼀部分喜欢刨根问
底的⼩伙伴来说简直是灾难:“我就觉得使⽤其他的执⾏⽅案⽐
EXPLAIN输出的这种⽅案强,凭什么优化器做的决定和我想的不⼀
样呢?”
在MySQL 5.6以及之后的版本中,设计MySQL的⼤叔贴⼼的为这部
分⼩伙伴提出了⼀个optimizer trace的功能,这个功能可以让我
们⽅便的查看优化器⽣成执⾏计划的整个过程,这个功能的开启与关
闭由系统变量optimizer_trace决定,我们看⼀下:
mysql> SHOW VARIABLES LIKE 'optimizer_trace';
+-----------------+--------------------------+
| Variable_name | Value |
+-----------------+--------------------------+
| optimizer_trace | enabled=off,one_line=off |
+-----------------+--------------------------+
1 row in set (0.02 sec)
可以看到enabled值为off,表明这个功能默认是关闭的。
⼩贴⼠:
one_line的值是控制输出格式的,如果为on那么所有输出都将在
⼀⾏中展示,不适合⼈阅读,所以我们就保持其默认值为off吧。
文档被以下合辑收录
评论