找出MySQL合并表中包括哪些表
我有两个MRG_MyISAM表,它们合并了MySQL数据库中的一组其他表。我想以编程方式找出每个合并表中包括哪些表 我知道我可以运行找出MySQL合并表中包括哪些表,mysql,myisam,Mysql,Myisam,我有两个MRG_MyISAM表,它们合并了MySQL数据库中的一组其他表。我想以编程方式找出每个合并表中包括哪些表 我知道我可以运行showcreatetable,然后解析语句的UNION=(tbl1,tbl2)部分,但这似乎有点老套。有更好的办法吗 在理想的世界里,我在寻找这样的东西: SELECT * FROM ?? WHERE merge_table = 'merge_table_1' 这将返回每个行都包含“merge_table_1”中包含的表的名称的行: 我认为INFORMATION
showcreatetable
,然后解析语句的UNION=(tbl1,tbl2)
部分,但这似乎有点老套。有更好的办法吗
在理想的世界里,我在寻找这样的东西:
SELECT * FROM ?? WHERE merge_table = 'merge_table_1'
这将返回每个行都包含“merge_table_1”中包含的表的名称的行:
我认为
INFORMATION\u SCHEMA
中没有任何数据可以列出合并表的成员
如果应用程序可以直接访问数据库服务器上的数据目录,则只需读取合并表的.MRG
文件即可。它是一个可读文件,只列出合并中的表以及任何其他合并表选项
你真的不应该再使用合并表了。您应该使用MySQL的引擎,它更灵活。使用分区表,您可以查询信息\u SCHEMA.PARTITIONS
表以查找每个分区的信息
事实上,您也不应该使用MyISAM表。InnoDB更具可扩展性,MyISAM不支持ACID的任何属性。
SHOW CREATE TABLE\u name代码>--看看这是否为您提供了有关InnoDB和分区的信息。可悲的是,我不是问题数据库的管理员,只是一个必须与之合作的人。
--------------
| table_name |
--------------
| tbl1 |
--------------
| tbl2 |
--------------