You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7实现Oracle COMPUTE SUM OF等效功能:统计Schema及总大小

MySQL 5.7 统计各Schema大小及总大小的方案

在MySQL 5.7里没有Oracle的COMPUTE SUM OF语法,但可以通过以下两种方案实现需求:

方案一:使用GROUP BY WITH ROLLUP(推荐)

这个语法会自动在分组结果末尾生成汇总行,是最简洁的实现方式:

SELECT 
    IFNULL(table_schema, 'Total') AS `DB Name`,
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
FROM information_schema.tables
GROUP BY table_schema WITH ROLLUP;
  • 效果:结果最后一行的DB Name显示为Total,对应的数值就是所有Schema的总大小
  • 可选优化:如果不想统计系统自带Schema(比如mysql、information_schema),可以添加过滤条件:
    SELECT 
        IFNULL(table_schema, 'Total') AS `DB Name`,
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
    FROM information_schema.tables
    WHERE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema')
    GROUP BY table_schema WITH ROLLUP;
    

方案二:使用UNION ALL手动拼接总行

如果需要更灵活控制结果逻辑,可以用UNION ALL把单个Schema统计结果和总统计结果拼接:

-- 单个Schema大小统计
SELECT 
    table_schema AS `DB Name`,
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
FROM information_schema.tables
GROUP BY table_schema
UNION ALL
-- 总大小统计
SELECT 
    'Total' AS `DB Name`,
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
FROM information_schema.tables;
  • 注意:两次查询的列数、列类型必须完全一致,否则会报错;同样可以给两个查询都加上WHERE条件过滤系统Schema。

内容的提问来源于stack exchange,提问作者Jes Challand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:12:18