[英]Microsoft Access - Sub Query running very slow
我正在努力为每个客户在每个期末汇总12个月的总收入。 期间表在每个所需期间为每个客户都有一行。
查询如下-可以运行,但是运行非常慢。
SELECT Periods.LTM_Start, Periods.Period_End, Periods.sa_account,
(SELECT Sum(sa_trvalue) FROM [Sales Transactions]
WHERE ((sa_trdate<= Periods.[Period_End])
AND (sa_trdate>= Periods.[LTM_Start]) )
AND
[Sales Transactions].sa_account = Periods.[sa_account]
AS Total
FROM Periods
GROUP BY Periods.LTM_Start, Periods.Period_End, Periods.sa_account;
由于使用了相关的子查询,因此查询的评估速度较慢,因此将对Periods
表的每个记录评估引用Sales Transactions
表的查询。
您应该能够通过适当地使用联接来提高性能,例如,类似以下的内容应产生相同的结果:
SELECT
Periods.LTM_Start,
Periods.Period_End,
Periods.sa_account,
SUM
(
IIF
(
[Sales Transactions].sa_trdate >= Periods.[LTM_Start] AND
[Sales Transactions].sa_trdate <= Periods.[Period_End],
[Sales Transactions].sa_trvalue,
0
)
) AS Total
FROM
Periods LEFT JOIN [Sales Transactions]
ON [Sales Transactions].sa_account = Periods.[sa_account]
GROUP BY
Periods.LTM_Start, Periods.Period_End, Periods.sa_account;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.