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();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值