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

SQL按ID分组查询时无需将描述字段加入GROUP BY的最优方法

最优实现方案

先对Sale表完成分组聚合后,再关联Company表取公司名称,SQL写法如下:

SELECT 
    agg.CompanyId,
    c.CompanyName,
    agg.Date,
    agg.TotalValue
FROM (
    SELECT 
        CompanyId,
        Date,
        SUM(Value) AS TotalValue
    FROM Sale
    GROUP BY Date, CompanyId
) AS agg
LEFT JOIN Company c ON agg.CompanyId = c.Id

方案优势说明

  1. 内层分组逻辑完全复用了你原有不加CompanyName时的2秒快速查询逻辑,没有额外开销
  2. 分组后的结果集行数远小于原始Sale表的行数,此时再和Company表关联,关联运算的量级极低,若Company表的Id是主键,关联查询效率更高
  3. 避免了两种原有写法的性能缺陷:
    • 原第一种写法是先全量关联两张表再分组,关联后的临时表体积大,分组时需要多比对CompanyName字段,额外产生了20秒的排序分组开销
    • 你当前用的子查询写法需要为分组后的每一行单独执行一次Company表查询,多次查询的开销累加导致耗时到5秒
      这个方案的整体耗时仅比基础分组查询多一点,通常可以控制在3秒以内,比现有两种写法性能都好。

内容的提问来源于stack exchange,提问作者Henrique Miranda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:02