表提供了有关数据库中所有表的详细信息。 您可以将其与
列的检查结合在一起,虽然不是完全准确(在某些情况下,尤其是在InnoDB的情况下可能是一个近似值),但可以合理地表明表是否具有数据。 像这样的查询可以使用:information_schema
TABLES
information_schema
用数据库的实际名称替换TABLE_ROWS
。 大于0的表可能包含数据。 请记住,对于所有存储引擎而言,
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_ROWS > 0;
> 'your_database_name'
TABLE_ROWS
识别非空表的效率在很大程度上取决于数据库和数据库系统本身的大小。 虽然查询TABLE_ROWS
(或其他数据库中的等效系统表)通常对于较小的数据库是有效的,但对于非常大的数据库,它可能会变得慢。
information_schema
,而不是检查整个表索引,而不是检查TABLE_ROWS
>
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name' AND EXISTS (SELECT 1 FROM your_database_name.TABLE_NAME LIMIT 1);
> EXISTS
EXISTS
使用'your_database_name'
>在找到第一行后停止。如果表至少有一行,则立即返回true,而无需计算所有行。 这比计算大桌子中的所有行要快得多。 请记住,用正确的值替换TABLE_NAME
>和information_schema
。您需要为每个表动态生成此查询,或使用存储的过程或脚本语言循环浏览从
是否有一个简单的查询可以在特定数据库中找到具有数据的表格? 前面提到的
查询通常是一个很好的起点:>此查询避免计数所有行,并在找到一行时立即停止。请记住,要动态生成此查询或在存储过程中使用循环或脚本语言在数据库中的所有表上迭代。 这种方法提供了一种相当简单有效的方法来识别包含数据的表。 但是,如果不是MySQL,请记住对数据库系统的特定语法进行调整。 PostgreSQL,SQL Server和Oracle具有自己的等效范围,并且可能需要稍有不同的语法。EXISTS
>
以上是如何检查哪些表包含数据库中的数据的详细内容。更多信息请关注PHP中文网其他相关文章!