【问题标题】:MYSQL - count number of rows in each tableMYSQL - 计算每个表中的行数
【发布时间】:2020-04-13 04:39:54
【问题描述】:

我想知道我的数据库中每个表中有多少行。我已经做到了

select count(*) _tablename_; 

但是我需要在每张桌子上都这样做 - 而且有很多。用表名和行数打印出来的最好方法是什么?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    SELECT table_name, table_rows
        FROM INFORMATION_SCHEMA.TABLES
        WHERE TABLE_SCHEMA = '<your db>';
    

    我也希望您意识到您的查询中有一个错误:它缺少FROM

    【讨论】:

    • 非常感谢。我认为最好从元数据中获取列表!
    • 糟糕...我试过这个查询,但它给出的结果不稳定(每次都有不同的值)!
    • 是的,InnoDB 行计数的不准确性是该引擎的副产品,如下所述:dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html
    • 特别是:“InnoDB 不保留表中的内部行数,因为并发事务可能同时“看到”不同数量的行。[...] 如果近似的行数是足够了,可以使用SHOW TABLE STATUS。”
    • 您还可以通过使用format(table_rows) 并在其中获取一些, 来稍微改进一下,这样您就可以更轻松地读取行数。
    【解决方案2】:

    以下查询将返回每个表中的行数,但它似乎并不总是返回确切的值

    SELECT table_name, table_rows
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = '<your db>';
    

    TABLE_ROWS:分区中的表行数。对于已分区的 InnoDB 表,在 TABLE_ROWS 列中给出的行数只是 SQL 优化中使用的估计值,可能并不总是准确的...... 更多https://dev.mysql.com/doc/mysql-infoschema-excerpt/5.5/en/partitions-table.html

    【讨论】:

    • 和上面的答案有什么不同?
    【解决方案3】:

    除了其他人的 SQL 查询外,还可以使用 Workbench GUI 来获取每个表的行数。为此,Launch Workbench -> Connect to Db -> 右键单击​​ Db 并选择“Schema Inspector”(如下面的屏幕截图 - 我已突出显示“Rows”列):

    HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2020-04-05
      相关资源
      最近更新 更多