在MySQL中,如何获取数据库下所有表的数据行数?
可以 MySQL 自带的 information_schema.tables 表的统计信息,初步判断表的数据行大小。
select table_schema,table_name,table_type,table_rows from information_schema.tables where table_schema='mysql';
对于非事务性表, table_rows 这个值是精确的,对于事务性引擎,这个值通常是估算的。例如 MyISAM ,存储精确的数目。对于其它存储引擎,比如 InnoDB ,本值是一个大约的数,与实际值相差可达 40 到 50% 。在这些情况下,使用 SELECT COUNT(*) 来获得准确的数目。对于在 information_schema 数据库中的表, Rows 值为 NULL 。
可以使用如下的 SQL 语句来批量统计数据库中的表的行数:
SELECT CONCAT( 'SELECT "', TABLE_NAME, '", COUNT(*) FROM ', TABLE_SCHEMA, '.', TABLE_NAME, ' UNION ALL' ) EXEC_SQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mysql';
把生成的 SQL 语句拷贝出来,并去掉最后的一个“ UNION ALL ”就可以执行了。产生的示例 SQL 如下所示:
select "abc_test", count(*) from ths.abc_test union all
select "abs_asset_pool_basic_info", count(*) from ths.abs_asset_pool_basic_info union all
select "abs_cash_flow_allot_mechanism", count(*) from ths.abs_cash_flow_allot_mechanism union all
sele