Sql 如何使用聚合加快查询速度?
如果select部分中使用了多个聚合,那么下面的查询似乎运行得很慢。有什么方法可以优化这一点吗 查询返回168行,需要1秒才能完成,但当两个用户同时加载页面,并且原始查询有更多的聚合,这也会增加查询的秒数时,查询就会陷入停滞 *****更新这里有一个更简单的查询**Sql 如何使用聚合加快查询速度?,sql,sql-server,aggregate,Sql,Sql Server,Aggregate,如果select部分中使用了多个聚合,那么下面的查询似乎运行得很慢。有什么方法可以优化这一点吗 查询返回168行,需要1秒才能完成,但当两个用户同时加载页面,并且原始查询有更多的聚合,这也会增加查询的秒数时,查询就会陷入停滞 *****更新这里有一个更简单的查询** Select gocm.CustomerID, sum(DISTINCT o.OrderTotal) as TotalOfOrders from GroupOrder_Customer_Mapping gocm
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
执行计划
返回以下数据(示例结果)
这可能对您有所帮助-
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
这可能对你有帮助-
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
如果数据不经常更新,你可能会考虑一个.
< P>如果数据不经常更新,你可能会考虑一个.< /p>你能包括执行计划吗?<代码>和(不同的命令总数)< /C>?如果两个人下了10美元的订单,你应该只计算其中一个?为什么你要做左连接而不是内部连接?哦,不-客户属性如FirstName和LastName的EAV。为什么这些不存储在客户表中?您是否打算拥有大量匿名客户?@chobo首先告诉我们您希望查询返回什么,因为我认为您的查询没有意义。您能包括执行计划吗?SUM(DISTINCT OrderTotal)是什么意思?如果两个人下了10美元的订单,你应该只计算其中一个?为什么你要做左连接而不是内部连接?哦,不-客户属性如FirstName和LastName的EAV。为什么这些不存储在客户表中?你有没有想过会有一大堆无名客户?@chobo首先告诉我们你希望你的查询返回什么,因为我认为你的查询没有意义。这几乎是即时的!非常感谢。我倾向于左连接中的一个子查询,但无法使其工作:)这几乎使它立即生效!非常感谢。我倾向于左连接中的子查询,但无法使其工作:)