我很难弄清楚什么是最好的,或者是否有区别,但是我没有找到任何材料来帮助我理解这一点,所以我会问这个问题,如果不是针对我,那么针对可能的其他人最终陷入同样的境地。
在 join 之前或之后聚合子查询,在我的具体情况下,由于碎片数据和糟糕的规范化过程,子查询相当慢,
我有一个非常复杂的主查询和一个由 3 个使用联合组合的小查询构建的子查询(将删除重复记录)我只需要这个子查询中的一个值(对于每一行),所以在某些时候,我最终会对该值求和,(连同将必要的控制数据与它一起分组,以便我可以加入)
什么会产生最大的影响?
- 在加入前对子查询求和,然后与聚合版本加入
- 保留原始数据,然后将值与主查询的其余部分相加
请记住,每一行都会汇总数千条记录,并且数据不是本地的而是构建的,因此可能驻留在内存中(这只是从查询优化器的角度来看的猜测)