找出MySQL合并表中包含哪些表

时间:2014-04-15 16:54:46

标签: mysql myisam

我有几个MRG_MyISAM表,它们在MySQL数据库中合并了许多其他表。我想以编程方式弄清楚每个合并表中包含哪些表。

我知道我可以运行SHOW CREATE TABLE,然后解析语句的UNION=(tbl1, tbl2)部分,但这看起来有点像hacky。还有更好的方法吗?

在一个理想的世界里,我正在寻找这样的东西:

SELECT * FROM ?? WHERE merge_table = 'merge_table_1'

这将返回每行包含“merge_table_1”中包含的表名称的行:

--------------
| table_name | 
--------------
| tbl1       |
--------------
| tbl2       |
--------------

2 个答案:

答案 0 :(得分:1)

我认为INFORMATION_SCHEMA中没有任何数据可以列出MERGE表的成员。

如果您的应用程序可以直接访问数据库服务器上的数据目录,则只需阅读合并表的.MRG文件即可。它是一个人类可读的文件,只是简单地列出合并中的表,以及任何其他合并表选项。

你真的不应该再使用MERGE表了。您应该使用MySQL的PARTITIONING引擎,它更加灵活。使用分区表,您可以查询INFORMATION_SCHEMA.PARTITIONS表以查找有关每个分区的信息。

实际上,您也不应该使用MyISAM表。 InnoDB更具可扩展性,MyISAM不支持ACID的任何属性。

答案 1 :(得分:0)

SHOW CREATE TABLE table_name; - 看看这是否为您提供了信息