在MySQL中,如何获取数据库下所有表的数据行数?

在MySQL中,可以通过查询`information_schema.tables`表获取数据库下所有表的大致行数。对于非事务性表,如MyISAM,数据是精确的;而对于InnoDB等事务性引擎,数据可能有出入,需要使用`SELECT COUNT(*)`获取准确值。可以使用SQL语句批量统计,生成的SQL需要去除最后一个`UNION ALL`后执行。
摘要由CSDN通过智能技术生成


在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值