MYSQL查询数据库中有数据的表的行数
作者:admin 发布于:2020-10-12 11:22 Monday 分类:网络转载
可以 MySQL 自带的 information_schema.tables 表的统计信息,初步判断表的数据行大小。
1
|
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 语句来批量统计数据库中的表的行数:
1
2
3
|
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 如下所示:
1
2
3
4
|
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 select "abs_credit_trigger_mechanism" , count (*) from ths.abs_credit_trigger_mechanism; |
运行结果:
1
2
3
4
5
6
7
8
9
|
+ -------------------------------+----------+ | abc_test | count (*) | + -------------------------------+----------+ | abc_test | 0 | | abs_asset_pool_basic_info | 3024 | | abs_cash_flow_allot_mechanism | 18857 | | abs_credit_trigger_mechanism | 1380 | + -------------------------------+----------+ 4 rows in set (0.06 sec) |
标签: MySQL