SQL带聚合函数与无聚合SELECT查询执行速度差异原因查询
两条SQL执行速度差异的原因
两者扫描的全表数据量一致,IO开销基本相当,耗时差异主要来自以下几个环节:
- 结果集处理与传输开销差距极大:第一条SQL需要返回全表145万行的所有查询字段,完整结果集通常可达几十甚至上百MB,服务器端序列化全量行数据、通过网络传输全量结果、客户端接收并加载结果的总开销极高,占了30秒耗时的绝大部分。第二条SQL按小时维度聚合后,仅返回每个小时的统计结果,最终结果集最多仅几千行,总容量不足1MB,相关处理开销可以忽略。
- 运算开销差异:第一条SQL需要为每一行做字段校验、输出格式化,145万次行级处理累积的CPU开销较高。第二条SQL采用流聚合模式,扫描数据过程中即可实时计算当前分组的最小值、平均值,不需要缓存全量行数据,仅需维护少量分组统计变量,CPU和内存开销都极低。
- 客户端渲染开销:观测到的30秒耗时通常已经包含了客户端加载、渲染145万行数据的时间,而第二条的少量结果客户端可以瞬间完成渲染,也会放大两者的耗时感知差异。
内容的提问来源于stack exchange,提问作者mahdi
相关产品推荐
相关产品推荐

