最近在工作中需要进行大表治理,那么首先第一步就是先统计一下MySQL中各个表的数据量。肯定不能对每一张表都去做SELECT count(*) FROM table_name
吧,那效率也太低了。如何使用一条SQL语句查询出所有表的数据量呢?
1.首先查询数据库信息:
SHOW DATABASES;
2.然后可以看到返回结果中包含了所有的库,我们选择information_schema
即可:
USE information_schema;
3.执行如下语句:
SELECT table_name, table_rows FROM tables ORDER BY table_rows DESC
- 即可统计出每张表的数据量。
- 需要
SELECT
的列以及WHERE
条件可以动态调整哦~
更新
翻车了,如果是InnoDB存储引擎,大家还是不要用这种方法啦,详见MySQL中count(*)和information_schema.tables中的table_rows值不相同