6

我需要获取所有数据库中服务器上所有表的列表。

我发现了两种方法。

1)。执行SHOW FULL TABLES from <each database name> WHERE table_type = 'BASE TABLE';

2)。执行SELECT table_name, table_schema FROM information_schema.tables WHERE TABLE_TYPE = "BASE TABLE";

问题:

1)。上面提到的还有其他方法可以表现得更好吗?

2)。执行上述两种方法是否有任何性能差异?

3)。以上两种方法哪一种更好执行?

4

2 回答 2

3

当然information_schematables比 SHOW TABLES 语句(在旧的 MySQL 版本 < 5.0 中使用)更可取。它提供了更多有用的信息,它是标准的系统架构(您可以在其他数据库中找到类似的架构,例如 SQL Server)。您可以使用标准 SELECT 语句从该模式中检索信息,我的意思是您可以使用 WHERE、GROUP BY、ORDER BY 和其他子句和函数。但有时,在大型数据库上,性能information_schema可能很差。

查看有关information_schema性能的文章:INFORMATION_SCHEMA 优化

于 2012-09-14T06:54:51.010 回答
1

在可能的情况下,我会使用information_schema. 它是一个ANSI 标准,但是,访问 MySql 的专有功能有时可能需要使用 SHOW* 函数。所以我想这取决于你的具体情况。

于 2012-09-14T06:35:02.120 回答