优化器的追踪

83 阅读1分钟

MySQL 的优化器是负责生成 SQL 查询执行计划的组件。在 MySQL 中,可以通过启用优化器的追踪来查看优化器是如何得到执行计划的。

以下是一个简单的步骤:

  1. 启用优化器追踪: 默认情况下,优化器追踪是关闭的。可以通过以下 SQL 查询来查看当前的状态:

    SHOW VARIABLES LIKE 'optimizer_trace';
    

    如果需要启用追踪,可以执行:

    SET optimizer_trace="enabled=on";
    

    请注意,启用优化器追踪可能会对性能产生一定的影响,因为它需要将优化分析的结果写入表中。

  2. 执行 SQL 查询: 执行一个 SQL 查询,优化器将生成执行计划。

    SELECT t.tcid FROM teacher t, teacher_contact tc WHERE t.tcid = tc.tcid;
    
  3. 查询优化器追踪结果: 查询系统表 information_schema.optimizer_trace 来查看优化器的追踪结果。

    SELECT * FROM information_schema.optimizer_trace\G
    

    在结果中,expanded_query 显示了优化后的 SQL 语句,considered_execution_plans 列出了所有考虑的执行计划。

  4. 关闭优化器追踪: 在查看完追踪结果后,可以将优化器追踪关闭以减小性能开销。

    SET optimizer_trace="enabled=off";
    

    再次检查状态:

    SHOW VARIABLES LIKE 'optimizer_trace';