之前写过了,如果需要查询某个数据库中所有表的行数, 可以通过information_schema.tables来统计,但是由于mysql8.0的缓存机制,导致这个数据和count(*)的结果不一致
sql
SELECT
TABLE_name,
table_rows
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA IN ( 'table_data' )
ORDER BY
table_rows DESC;
table_data 为所需要查询的数据库
因此我们需要使用count(*)来统计数据,但是逐一表来统计比较麻烦,下面还有一种快捷方式
首先通过information_schema.tables 来组合语句
sql
select concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union all'
) from information_schema.tables
where TABLE_SCHEMA in ('table_data');
将输出的结果拷贝出来,将最后一行的union all 删除,就可以运行统计了。