繁体   English   中英

Microsoft Access-子查询运行非常慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM