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();
相关推荐
倔强的石头_5 小时前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab18 小时前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence1 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神1 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据2 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡2 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧2 天前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon2 天前
SQL学习指南——视图
数据库·sql
活宝小娜2 天前
mysql详细安装教程
数据库·mysql·adb