提高Access中计算速度的提示

时间:2014-12-22 14:26:19

标签: sql performance ms-access

我正在使用MS Access 2013(无法访问其他SQL程序)。

我必须根据超过50个客户(总共540,000行)的30年(开始时为10800行)的每日细分来过滤数据。 我的查询速度存在问题。经过一些连接和过滤后,整个过程需要几秒钟才能运行。为了加快计算,我尝试了:

  1. 打破查询(使用尽可能少的联接)

  2. 仅过滤“有效数据”;

  3. 聚合迭代查询;

  4. 将日期编入索引(以整数形式)。

  5. 需要为每个日历日期添加由客户汇总的总计DealValue,用于其“活动期间”(给定交易的StartDate和EndDate之间的每一天)。这些交易可能会延续30年。看起来 LEFT JOIN 导致所有减速。

    我的最终查询如下:

    SELECT QMaster.CalDate, 
           QDeals.CustomerID, 
           Sum(IIf([QDeals]![Limit]="S",[QDeals.DealValue],0)) AS S, 
           Sum(IIf([QDeals]![Limit]="L",[QDeals.DealValue],0)) AS L
    FROM QMaster 
         LEFT JOIN TDeals 
         ON (QMaster.CalDate> QDeals.DealStartDate) 
            AND (QMaster.CalDate< QDeals.DealEndDate)
    GROUP BY QMaster.CalDate, QDeals.CustomerID;
    -- where QMaster (540.000 rows) / QDeals (> 10.000 rows) / calculation time 5<>7s
    -- the query may contain typos as I had to change the name description for disclosure.
    

    有关如何更换LEFT JOIN的任何提示?

    此查询之前的任何其他速度改进?

    我想在我的'主'查询中添加一个'互动'访问表单,这会变得很慢(不是用户友好的)。

0 个答案:

没有答案