首页 > 解决方案 > 如果表很大,如何按组获取数字的总和

问题描述

我想汇总(汇总)家庭花费的钱。

我有 2 张桌子。

我想获取family_id,并按总金额排序。

两个表都很大,成员表是两倍大。我应该如何将数字和分组方式相加会更快?

标签: sql

解决方案


我认为这GROUP BY是明智的选择,但是,优化空间不大:

SELECT
    h.household_id,
    COALESCE(SUM(m.money_spend), 0) AS total
FROM Household h
LEFT JOIN Member m
    ON h.member_id = m.member_id
GROUP BY
    h.household_id;

我真的不想输入那个查询,但我这样做只是为了指出聚合确实需要潜在地触及表HouseholdMember表中的每条记录。这样做的原因是,在我们统计完每个成员并因此记录每个成员的记录之前,我们不知道一个家庭的总支出。

因为我们正在从 进行左连接Household,所以我们正在扫描这个表,member_id连接列上的索引应该没有太大区别。同样,member_id可能是表中的主键和索引Member。因此,我不希望索引有助于连接,而且索引也不应该在聚合中产生太大影响。


推荐阅读