一条SQL查询出MySQL数据库中所有表的数据量大小

最近在工作中需要进行大表治理,那么首先第一步就是先统计一下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
    
  4. 即可统计出每张表的数据量。

  5. 需要SELECT的列以及WHERE条件可以动态调整哦~

更新

翻车了,如果是InnoDB存储引擎,大家还是不要用这种方法啦,详见MySQL中count(*)和information_schema.tables中的table_rows值不相同

猜你喜欢

转载自blog.csdn.net/itigoitie/article/details/127929487