MySQL 的优化器是负责生成 SQL 查询执行计划的组件。在 MySQL 中,可以通过启用优化器的追踪来查看优化器是如何得到执行计划的。
以下是一个简单的步骤:
-
启用优化器追踪: 默认情况下,优化器追踪是关闭的。可以通过以下 SQL 查询来查看当前的状态:
SHOW VARIABLES LIKE 'optimizer_trace';如果需要启用追踪,可以执行:
SET optimizer_trace="enabled=on";请注意,启用优化器追踪可能会对性能产生一定的影响,因为它需要将优化分析的结果写入表中。
-
执行 SQL 查询: 执行一个 SQL 查询,优化器将生成执行计划。
SELECT t.tcid FROM teacher t, teacher_contact tc WHERE t.tcid = tc.tcid; -
查询优化器追踪结果: 查询系统表
information_schema.optimizer_trace来查看优化器的追踪结果。SELECT * FROM information_schema.optimizer_trace\G在结果中,
expanded_query显示了优化后的 SQL 语句,considered_execution_plans列出了所有考虑的执行计划。 -
关闭优化器追踪: 在查看完追踪结果后,可以将优化器追踪关闭以减小性能开销。
SET optimizer_trace="enabled=off";再次检查状态:
SHOW VARIABLES LIKE 'optimizer_trace';