兔八哥极品软件园    运行: 3216天 | 文章:608 篇 | 评论:85 条 | 碎语:1条

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 |
+-------------------------------+----------+
rows in set (0.06 sec)

标签: MySQL


Powered by 兔八哥极品软件 苏ICP备12049267号 sitemap