有什么方法可以跟踪优化器在 MySQL 中的工作吗?

zli*_*i89 7 mysql optimization

就像 SQL Server 中的 MEMO 结构一样,它是优化器在优化查询时所采取的步骤的“书面记录”。MySQL 中是否有任何内容可以让我获得诸如优化器考虑的计划、每个计划的成本之类的信息?

ype*_*eᵀᴹ 10

最近的 5.6 版本增加了这个功能。

参见:MySQL Internals Manual ::chapter 9. 跟踪优化器

典型用法:

# Turn tracing on (it's off by default):
SET optimizer_trace="enabled=on";

SELECT ...; # your query here

SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;

# possibly more queries...

# When done with tracing, disable it:
SET optimizer_trace="enabled=off";
Run Code Online (Sandbox Code Playgroud)

您可以在SQL-Fiddle 中看到它的运行情况。不确定如何美化输出。