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

执行多列聚合SQL查询时,表会被迭代多少次?

多列聚合查询的表迭代次数解释

针对你给出的查询语句:

SELECT sum(colA * ColB) /sum(ColA), sum(ColA), avg(ColB) FROM TABLE

主流关系型数据库(如MySQL、PostgreSQL、SQL Server等)只会对表迭代一次,原因如下:

  • 数据库执行聚合操作时,会在单次表扫描过程中同时计算所有需要的聚合值:
    • 每读取一行数据,就计算colA * ColB并累加到sum(colA * ColB)的临时结果中
    • 同时累加colA的值到sum(ColA)的临时结果
    • 另外还会累加colB的值到avg(ColB)的总和临时变量,同时记录总行数(因为平均值等于总和除以行数)
  • 等单次扫描完成后,再基于已经计算好的聚合临时结果,完成sum(colA * ColB)/sum(ColA)的算术运算,这个步骤不需要再次扫描表。

只有当查询涉及多个独立子查询、或者需要多次聚合且无法在单次扫描中完成时,数据库才会多次迭代表,但你的这个查询显然不属于这类情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:59:51