直接查information_schema.tables表是最常用高效方式,但table_rows为估算值,InnoDB误差达±40%~50%,MyISAM较准;精确统计需用COUNT(*),但大表慎用。

直接查 information_schema.tables 表是最常用、最高效的方式,但要注意 table_rows 是估算值,尤其对 InnoDB 表可能有较大偏差。
查单个表的记录数(快速估算)
适用于日常巡检或粗略评估:
- 执行:
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'your_db' AND table_name = 'your_table'; -
table_rows字段返回的是优化器统计值,非实时精确值 - InnoDB 表误差常见为 ±40%~50%,MyISAM 表相对准确
查指定数据库所有表的记录数(按大小排序)
便于识别大表、定位数据分布:
这套系统是之前为一个朋友开发的一套游戏币交易系统,开发语言asp+javascript 数据库是Access。现在提供免费下载给新人学习,请不要用于商业用处。大分类为:商品管理现金转虚拟币管理 虚拟币转现金管理 历史转换记录 ID搜索虚拟币管理用户管理前台用户管理 被停权的会员 后台管理员添加 后台用户员管理 数据表备份分类管理游戏名称管理 服务器名管理数据统计查询交易类型数据信息管理修改重要公告
- 执行:
SELECT table_name, table_rows, TRUNCATE(data_length/1024/1024,2) AS data_mb, TRUNCATE(index_length/1024/1024,2) AS idx_mb FROM information_schema.tables WHERE table_schema = 'your_db' AND table_type = 'BASE TABLE' ORDER BY table_rows DESC; - 加上
AND table_type = 'BASE TABLE'可排除视图干扰 -
data_mb和idx_mb分别反映数据和索引占用的磁盘空间(单位 MB)
获取数据库总记录数(汇总统计)
适合做容量规划或迁移前评估:
- 执行:
SELECT SUM(table_rows) AS total_rows FROM information_schema.tables WHERE table_schema = 'your_db' AND table_type = 'BASE TABLE'; - 结果是各表
table_rows的加总,仍属估算,不等于SELECT COUNT(*) FROM ...累加 - 如需精确总数,必须逐表执行
COUNT(*),但大表会锁表、耗时长,慎用
需要精确记录数时的操作建议
仅在审计、校验等强一致性场景下才推荐:
- 对单表:直接运行
SELECT COUNT(*) FROM your_table; - 对多表:可写简单脚本循环执行
COUNT(*),并把结果存入临时表或导出 - 避免在业务高峰期执行全表 COUNT,尤其是千万级以上大表
- 若表带软删除字段(如
isdel),记得加条件过滤,例如COUNT(*) WHERE isdel = '0'









