mysql 查看某数据库中所有表的行数,information_schema.tables不准确。count(*)拼接准确。
作者:互联网
mysql使用information_schema.tables统计表的行数,统计结果和count(*)的结果不一样。
select table_name,table_rows from information_schema.tables
where TABLE_SCHEMA = 'qyqdb'
order by table_rows desc;
经查询:information_schema.tables 对于InnoDB表,table_rows行计数仅是大概估计值,不准确。
mysql使用select count(*) from table_name可以查询某个表的总记录数。比较准确!
想快速的知道数据库中所有表的记录数信息怎么办?
另外一种办法还是借助information_schema库的tables表,来拼接出一个条sql语句,例如:
统计qyqdb数据库下所有的表的行数,生产统计语句。
select concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union all'
) from information_schema.tables
where TABLE_SCHEMA='qyqdb';
把生成的结果手动加工一下。
举例如下:
统计bigData_1数据库下所有表的行数:
select concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union all'
) from information_schema.tables
where TABLE_SCHEMA in ('bigData_1');
结果:
+------------------------------------------------------------------------------------------------------------------------------------+
| concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union all'
) |
+------------------------------------------------------------------------------------------------------------------------------------+
| select "report_cert_action_day", count(*) from bigdata_1.report_cert_action_day union all |
| select "report_cert_action_month", count(*) from bigdata_1.report_cert_action_month union all |
| select "report_cert_day", count(*) from bigdata_1.report_cert_day union all |
| select "report_cert_month", count(*) from bigdata_1.report_cert_month union all |
+------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
mysql>
对以上输出结果进行修改,如下:
select "report_cert_action_day", count(*) from bigdata_1.report_cert_action_day union all
select "report_cert_action_month", count(*) from bigdata_1.report_cert_action_month union all
select "report_cert_day", count(*) from bigdata_1.report_cert_day union all
select "report_cert_month", count(*) from bigdata_1.report_cert_month
输出结果如下:
mysql> select "report_cert_action_day", count(*) from bigdata_1.report_cert_action_day union all
-> select "report_cert_action_month", count(*) from bigdata_1.report_cert_action_month union all
-> select "report_cert_day", count(*) from bigdata_1.report_cert_day union all
-> select "report_cert_month", count(*) from bigdata_1.report_cert_month
-> ;
+--------------------------+----------+
| report_cert_action_day | count(*) |
+--------------------------+----------+
| report_cert_action_day | 168 |
| report_cert_action_month | 131 |
| report_cert_day | 82 |
| report_cert_month | 39 |
+--------------------------+----------+
4 rows in set (0.00 sec)
mysql>
标签:count,information,action,cert,select,report,day,准确 来源: https://blog.csdn.net/qyq88888/article/details/121206798