对于小表,可以直接使用聚集函数来查询:
select count(1) from table_name;
但对于大表,例如几千万行数据量的表格,这个查询会超时,对于线上系统,还会因为消耗系统资源过多而影响整个系统的稳定。
如果只是粗略估计(当数据达到千万级别,精确数据已经没有意义啦),可以使用 information_schema 库的 tables 表:
mysql> use information_schema;
Database changed
mysql> select TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, AVG_ROW_LENGTH from tables order by TABLE_ROWS desc;
+--------------+-------------+------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | AVG_ROW_LENGTH |
+--------------+-------------+------------+----------------+
| test | t_00 | 217092343 | 478.8070 |
| test | t_01 | 328933 | 742.7469 |
| test | t_02 | 243944 | 750.5491 |
+--------------+-------------+------------+----------------+