MySQL查询数据库表的数据量

30 阅读1分钟
-- 选择要操作的数据库
USE db;

-- 设置 group_concat_max_len 以确保 SQL 语句不会被截断
SET SESSION group_concat_max_len = 102400;

-- 创建变量用于存储动态生成的 SQL 语句
SET @sql = NULL;

-- 生成 SQL 语句
SELECT GROUP_CONCAT(
    CONCAT('SELECT ''', table_name, ''' AS table_name, COUNT(*) AS row_count FROM ', table_name)
    ORDER BY table_name
    SEPARATOR ' UNION ALL '
) INTO @sql
FROM information_schema.tables
WHERE table_schema = DATABASE();

-- 追加 ORDER BY 语句
SET @sql = CONCAT(@sql, ' ORDER BY row_count DESC');

-- 准备并执行动态 SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;