«

MySQL查看表行数

时间:2026-10-22 07:10     作者:emer     分类: 无


MySQL查看表行数

引言

评估表规模、判断是否需要分表、统计数据量时都要看行数。COUNT(*)最准但大表慢,information_schema的TABLE_ROWS快但InnoDB是估算值,两个手段按场景选。

精确统计:COUNT(*)

SELECT COUNT(*) FROM users;

精确返回真实行数,MyISAM直接读元数据很快,InnoDB要逐行扫描,大表千万级以上会锁读、耗时长。

带条件统计

SELECT COUNT(*) FROM orders WHERE status = 1;

统计满足条件的行数,WHERE命中索引时走索引扫描,比全表快。

估算行数:information_schema

SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'blog' AND TABLE_NAME = 'users';

秒出结果,适合先摸底表规模,但InnoDB的TABLE_ROWS是基于采样的估算值,可能和真实值差10%到20%。

一次查看库里所有表行数

SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH/1024/1024 AS data_mb
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'blog'
ORDER BY TABLE_ROWS DESC;

按行数排序,快速找出最大的几张表,配合DATA_LENGTH看占用空间。

大表COUNT优化思路

注意事项

总结

COUNT()精确统计行数,大InnoDB表慢且耗资源;information_schema.TABLE_ROWS秒出估算值用于摸底。先看估算判断表规模,需要精确再COUNT(),条件统计尽量走索引。大表COUNT避开业务高峰,增删数据后先ANALYZE TABLE刷新元数据。实时报表建议走汇总表或缓存,避免线上大表反复全表扫描。

标签: MySQL information_schema count 数据库运维 表行数