【发布时间】: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)。
有没有办法让这个查询返回真实的表名?
【问题讨论】:
我正在使用这个查询:
EXPLAIN SELECT * FROM DB1.TABLE1 AS T1, DB2.TABLE2 AS T2 WHERE T1.ID = T2.ID
结果,我需要收集此查询中使用的表的“表”列将返回查询中使用的别名(T1,T2)而不是它们的真实名称(TABLE1,TABLE2)。
有没有办法让这个查询返回真实的表名?
【问题讨论】:
很遗憾,答案是:不,没有办法……
正如 CodeBird 所指出的,在 MySQL 错误跟踪器上打开了一个错误报告:
http://bugs.mysql.com/bug.php?id=24693
尽管 MySQL 文档明确指出“输出行所引用的表的名称”,但 EXPLAIN 的所有输出都受到此问题的困扰。甚至新的 FORMAT=JSON 选项...
【讨论】:
只需使用真实的表名作为别名。
EXPLAIN SELECT * FROM DB1.TABLE1, DB2.TABLE2 WHERE TABLE1.ID = TABLE2.ID
【讨论】:
EXPLAIN 和EXPLAIN EXTENDED。这就是您可以信赖的全部。