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();
相关推荐
东风破_17 分钟前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家2 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_962066493 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext4 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
数字新视界6 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..6 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
这个DBA有点耶7 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_962074818 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_962073818 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql
Frank_refuel8 小时前
【MYSQL进阶】-> 索引理解
数据库