【问题标题】:mysql - explain query with real table namesmysql - 用真实表名解释查询
【发布时间】:2014-04-11 13:42:27
【问题描述】:

我正在使用这个查询:

EXPLAIN SELECT * FROM DB1.TABLE1 AS T1, DB2.TABLE2 AS T2 WHERE T1.ID = T2.ID

结果,我需要收集此查询中使用的表的“表”列将返回查询中使用的别名(T1,T2)而不是它们的真实名称(TABLE1,TABLE2)。

有没有办法让这个查询返回真实的表名?

【问题讨论】:

    标签: mysql explain


    【解决方案1】:

    很遗憾,答案是:不,没有办法……

    正如 CodeBird 所指出的,在 MySQL 错误跟踪器上打开了一个错误报告:

    http://bugs.mysql.com/bug.php?id=24693

    尽管 MySQL 文档明确指出“输出行所引用的表的名称”,但 EXPLAIN 的所有输出都受到此问题的困扰。甚至新的 FORMAT=JSON 选项...

    【讨论】:

      【解决方案2】:

      只需使用真实的表名作为别名。

      EXPLAIN SELECT * FROM DB1.TABLE1, DB2.TABLE2 WHERE TABLE1.ID = TABLE2.ID
      

      【讨论】:

      • 不!我无法更改查询!有很多查询需要解释,我无法手动删除别名!
      • 那么您必须使用 EXPLAIN 中的别名。无法以这种方式更改 EXPLAIN 的输出。
      • 那么,有没有其他方法可以返回查询中使用的所有表?
      • 不,没有。你有EXPLAINEXPLAIN EXTENDED。这就是您可以信赖的全部。
      • @michaelropy 如果您更喜欢使用开源代码,这里有一个有用的链接:bugs.mysql.com/bug.php?id=24693
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多