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

【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
BEGIN
    UPDATE 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
BEGIN
    UPDATE 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_count
    FROM your_table_name PARTITION (partition_1)
    UNION ALL
    SELECT COUNT(*) AS partition_count
    FROM your_table_name PARTITION (partition_2)
    -- 继续添加其他分区
) AS total_count;

http://www.kler.cn/a/442052.html

相关文章:

  • 运动相机拍视频过程中摔了,导致录视频打不开怎么办
  • 微信小程序-base64加解密
  • vue项目配置多语言
  • 粒子群优化 (PSO, Particle Swarm Optimization) 算法详解及案例分析
  • Vue2.0的安装
  • 在Playwright中使用PO模式
  • P8795 [蓝桥杯 2022 国 A] 选素数
  • [java]网络编程
  • 使用vitejs搭配vue.js,快速构建简单的网站案例展示Demo
  • Java基础夯实——2.6 Java中锁
  • STM32-笔记3-驱动蜂鸣器
  • 警告 torch.nn.utils.weight_norm is deprecate 的参考解决方法
  • Scala 的迭代器
  • 基于遗传优化SVM支持向量机的数据分类算法matlab仿真,SVM通过编程实现,不使用工具箱
  • VMware Workstation Pro 17 与 虚拟机 ——【安装操作】
  • NoSQL数据库介绍与分类
  • 引言和相关工作的区别
  • AOP实现操作日志记录+SQL优化器升级
  • NFT市场回暖:蓝筹项目成为复苏主力,空投潮助推价格上涨
  • Android 13 Aosp SystemServer功能裁剪(PackageManager.hasSystemFeature())
  • Jenkins搭建并与Harbor集成上传镜像
  • 如何查看K8S集群中service和pod定义的网段范围
  • 备战美赛!2025美赛数学建模C题模拟预测!用于大家练手模拟!
  • Python之公共操作篇
  • AirSim 无人机不同视角采集不同场景的图片
  • SEO短视频矩阵系统源码开发概述