优化大型查询

时间:2019-09-10 20:26:36

标签: sql postgresql

我有一个类似这样的结构的长查询-

with 
abc as (
              select ind, 
                     sum(count) as tot
                from LargeQuery
            group by ind),
xyz as (
              select org,
                     sum(count) as cnt
                from LargeQuery
            group by org
)

LargeQuery有很多CTE和子查询。如您所见,LargeQuery被计算两次。有没有一种方法可以优化此查询,使其不会运行两次?

更新

我的largequery的格式如下。我认为我不能做with largequery as (...), abc as (...), xyz as (...),因为OrgInd是从此largequery中选择的,我需要在abc和{{1 }} cte。

xyz

1 个答案:

答案 0 :(得分:1)

我不确定您想做什么,但是您可以使用grouping sets

select ind, org, sum(count) as tot
from LargeQuery
group by grouping sets (ind, org);

这将同时进行两种聚合。