前言:
mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查。记得在Navicat里,选择一个数据量,点击表,如图:
那么如何通过sql实现呢?在mysql里是可以查询information_schema.tables这张表的
1
2
3
4
|
SELECT table_rows,table_name FROM information_schema.tables WHERE TABLE_SCHEMA = '数据库名称' and table_name not in ( '不查询的表名称' ) ORDER BY table_rows DESC ; |
OK,本来还以为已经没问题了,然后还是被反馈统计不对,后来去找了资料说是对于MyISAM才是正确的统计数据,但是对于InnoDB引擎的,可能与实际值相差 40% 到 50%,所以只是一个大概的统计所以针对这种情况,要更改存储引擎,肯定是不太合适,因为InnoDB是默认的存储引擎,能支持事务外健,并发情况性能也比较好。继续找资料,正确的sql如下:
1
2
3
4
5
6
7
8
9
|
select table_schema as '数据库' , table_name as '表名' , table_rows as '记录数' , truncate (data_length/1024/1024, 2) as '数据容量(MB)' , truncate (index_length/1024/1024, 2) as '索引容量(MB)' from information_schema.tables where table_schema= 'test' order by table_rows desc , index_length desc ; |
查询结果如下:
到此这篇关于MySQL实现查询数据库表记录数的文章就介绍到这了,更多相关MySQL查询表记录数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://juejin.cn/post/7148308750955675655