当前位置: 首页 > news >正文

【mysql】如何查看大表记录行数

目录

          • 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS
          • 2. 查询 INFORMATION_SCHEMA 表
          • 3. 使用索引统计信息
          • 4. 维护行数缓存
          • 5. 使用分区计数

1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS
  • 1.ANALYZE TABLE 可以更新表的统计信息,然后使用 SHOW TABLE STATUS 来查看估算的行数。
  • 2.示例
-- 更新表的统计信息
ANALYZE TABLE your_table_name;-- 查看表的状态信息,包括估算的行数
SHOW TABLE STATUS LIKE 'your_table_name';
  • 3.在输出结果中,Rows 列显示的是表的估算行数
2. 查询 INFORMATION_SCHEMA 表
  • 1.查询 INFORMATION_SCHEMA.TABLES 表也可以获取表的估算行数。
  • 2.示例
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'your_database_name'  AND TABLE_NAME = 'your_table_name';
  • 3.TABLE_ROWS 显示的是估算值,不是精确的行数。
3. 使用索引统计信息
  • 1.在 InnoDB 存储引擎中,可以使用索引的统计信息来获取行数。通过 SHOW INDEX 或查询 INFORMATION_SCHEMA.STATISTICS 可以获得索引的估算行数。
  • 2.使用示例
SHOW INDEX FROM your_table_name;
4. 维护行数缓存
  • 1.为了在生产环境中高效地获取精确的行数,可以使用触发器维护一个单独的表,用于记录每个大表的行数。(不建议,维护迁移太难了,影响性能)
  • 2.这种方法可以提供实时的精确计数,而不会每次都扫描整个表。
  • 3.示例
-- 创建行数缓存表
CREATE TABLE table_row_count (table_name VARCHAR(255) PRIMARY KEY,row_count INT
);-- 初始化行数
INSERT INTO table_row_count (table_name, row_count)
VALUES ('your_table_name', (SELECT COUNT(*) FROM your_table_name));-- 创建插入触发器
CREATE TRIGGER after_insert_trigger
AFTER INSERT ON your_table_name
FOR EACH ROW
BEGINUPDATE table_row_count SET row_count = row_count + 1 WHERE table_name = 'your_table_name';
END;-- 创建删除触发器
CREATE TRIGGER after_delete_trigger
AFTER DELETE ON your_table_name
FOR EACH ROW
BEGINUPDATE table_row_count SET row_count = row_count - 1 WHERE table_name = 'your_table_name';
END;-- 查询行数
SELECT row_count 
FROM table_row_count 
WHERE table_name = 'your_table_name';
5. 使用分区计数
  • 1.如果表使用了分区,可以分别统计每个分区的行数,然后汇总得到总行数。这种方法可以避免在单个大表上进行全表扫描。
  • 2.示例
SELECT SUM(partition_count)
FROM (SELECT COUNT(*) AS partition_countFROM your_table_name PARTITION (partition_1)UNION ALLSELECT COUNT(*) AS partition_countFROM your_table_name PARTITION (partition_2)-- 继续添加其他分区
) AS total_count;
http://www.lryc.cn/news/506174.html

相关文章:

  • Linux之网络配置
  • SpringBoot集成JWT和Redis实现鉴权登录功能
  • LabVIEW热电偶传感器虚拟仿真实验系统
  • Centos7 部署ZLMediakit
  • Docker搭建kafka环境
  • wsl2-ubuntu安装docker后无法拉取镜像
  • Invalid bound statement (not found) 错误解决
  • 深度学习的下一站:解锁人工智能的新边界
  • 搭建Tomcat(三)---重写service方法
  • 跟着AI 学AI开发二,本地部署自己的Chat GPT
  • XXE靶机漏洞复现通关
  • XS9922B 同轴RX芯片 四通道 多合一模拟高清解码器
  • 如何在谷歌浏览器中设置电子邮件通知
  • 利用Java获取淘宝商品详情API接口的深入指南引言
  • 3D工具显微镜的测量范围
  • WPF DataTemplate 数据模板
  • 知道一个服务器IP地址,如何attack对方美国
  • lettuce 默认情况下连接池参数不生效,源码分析
  • 《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?
  • 应用于项目的 C++单例基类的设计、实现与应用
  • Mongodb 启用认证
  • QT:vlc出错处理及重新播放
  • 密钥管理系统在数据安全解决方案中的重要性
  • Docker的容器编排
  • Java Web项目部署教程简单实用
  • 推送本地仓库到远程git仓库
  • 线性池学习
  • 微积分复习笔记 Calculus Volume 2 - 4.3 Separable Equations
  • 前端项目部署方法
  • Docker创建一个mongodb实例,并用springboot连接 mongodb进行读写文件