1

如果在选择部分中使用了多个聚合,我有以下查询似乎运行得很慢。有什么办法可以优化吗?

该查询返回 168 行并需要 1 秒才能完成,但是当几个用户同时加载页面并且原始查询有更多聚合时,这会陷入困境,这也会增加查询的秒数。

***** 更新这里是一个更简单的查询**

Select 
    gocm.CustomerID,
    sum(DISTINCT o.OrderTotal) as TotalOfOrders
from GroupOrder_Customer_Mapping gocm
    Left Join [Order] o on o.CreatedForCustomerID = gocm.customerid and o.grouporderid = 8254
where gocm.grouporderid = 8254
    group by gocm.CustomerID, invitePath
    order by invitepath 

执行计划

在此处输入图像描述

返回以下数据(样本结果) 在此处输入图像描述

4

2 回答 2

1

可能这对您有帮助-

SELECT 
      gocm.CustomerID
    , o.TotalOfOrders 
FROM (
    SELECT DISTINCT gocm.CustomerID, invitePath
    FROM dbo.GroupOrder_Customer_Mapping gocm
    WHERE gocm.grouporderid = 8254
) gocm 
LEFT JOIN (
    SELECT 
          o.CreatedForCustomerID
        , TotalOfOrders = SUM(DISTINCT o.OrderTotal) 
    FROM dbo.[Order] o
    WHERE o.grouporderid = 8254
    GROUP BY o.CreatedForCustomerID
) o ON o.CreatedForCustomerID = gocm.customerid 
ORDER BY invitepath 
于 2013-06-07T05:45:26.390 回答
0

如果数据不经常更新,您可以考虑使用索引视图

于 2017-10-16T14:27:35.857 回答