innodb 更新存储的索引大小以及记录数

innodb 更新存储的索引大小以及记录数

思路:

数据量极小,可以根据行数 快速找出我需要的表~ 。

mysql8 存储过程解决方案 ,谨慎使用!!

建议本地测试使用 ,数据量大的别用!!

复制代码
DELIMITER //

DROP PROCEDURE IF EXISTS FindAccurateNonEmptyTables //

CREATE PROCEDURE FindAccurateNonEmptyTables()
BEGIN
    -- 1. 所有声明(DECLARE)语句集中放在开头
    
    -- 声明变量用于存储表名
    DECLARE v_table_name VARCHAR(255);
    
    -- 声明游标,遍历目标数据库中的所有 BASE TABLE
    DECLARE table_cursor CURSOR FOR 
        SELECT table_name 
        FROM information_schema.TABLES
        WHERE table_schema = @db_name 
          AND table_type = 'BASE TABLE';
          
    -- 声明 NOT FOUND 处理器,用于退出循环
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET @finished = 1;

    -- 2. 所有可执行语句(SET, OPEN, LOOP 等)从这里开始
    
    -- 定义要操作的数据库名称
    SET @db_name = 'testdb'; 
    
    -- 初始化变量
    SET @finished = 0;
    
    -- 打开游标
    OPEN table_cursor;

    -- 遍历所有表并执行 ANALYZE TABLE
    analyze_loop: LOOP
        FETCH table_cursor INTO v_table_name;
        
        IF @finished = 1 THEN
            LEAVE analyze_loop;
        END IF;

        -- 构造动态 SQL 语句:ANALYZE TABLE `db_name`.`table_name`
        SET @sql = CONCAT('ANALYZE TABLE `', @db_name, '`.`', v_table_name, '`');
        
        -- 准备并执行动态 SQL
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

    END LOOP;
    
    -- 关闭游标
    CLOSE table_cursor;

    -- 3. 执行最终查询:查询已更新统计信息的非空表
    SELECT
        table_schema AS DatabaseName,
        table_name AS TableName,
        table_rows AS RecordCount
    FROM
        information_schema.TABLES
    WHERE
        table_schema = @db_name
        AND table_type = 'BASE TABLE'
        AND table_rows > 0
    ORDER BY
        RecordCount DESC,
        TableName ASC;

END //

DELIMITER ;

-- 4. 执行存储过程
CALL FindAccurateNonEmptyTables();
相关推荐
lusklusklusk9 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW10 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB10 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_10 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室11 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
龙腾AI白云11 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱
KaiwuDB11 小时前
KaiwuDB 运维实战06:数据库备份与恢复:从理论到实战
运维·数据库·时序数据库·kaiwudb
数字新视界12 小时前
空调控制器AIRC800的智能化管理与应用实践
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
学IT的周星星12 小时前
LangGraph:用「流程图」的方式编排 Agent
数据库·人工智能·大模型·llm·流程图·agent
吃一碗粉只付一碗钱13 小时前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#