我需要获取所有数据库中服务器上所有表的列表。
我发现了两种方法。
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)。上述哪两种方法最好执行?
答案 0 :(得分:2)
当然information_schema
。tables
比SHOW TABLES语句(在旧的MySQL版本&lt; 5.0中使用)更可取。它提供了更多有用的信息,它是标准的系统模式(您可以在其他数据库中找到类似的模式,例如SQL Server)。您可以使用标准SELECT语句从此模式中检索信息,我的意思是您可以使用WHERE,GROUP BY,ORDER BY等子句和函数。但有时候,在大型数据库上,information_schema
的性能可能会很差。
查看有关information_schema
效果的文章:INFORMATION_SCHEMA Optimization。
答案 1 :(得分:0)
如果可能,我会使用information_schema
。它是ANSI standard,但是,访问MySql的专有功能可能需要偶尔使用SHOW *函数。
所以我想这取决于你的具体情况。