我写了一个查询来查找经销商月份的平均距离,查询在SQL中工作得相当快,但同样的查询在MS Access中占用的时间非常长。我该怎么做才能优化查询。
SELECT su.Buy_PDN
,avg(INT (Sqr((69.1 * (Z3.Latitude - Z4.LATITUDE)) * (69.1 * (Z3.Latitude - Z4.LATITUDE)) + (53 * (Z3.Longitude - Z4.Longitude)) * (53 * (Z3.Longitude - Z4.Longitude)))))
FROM (
(
(
(
tbl1 su INNER JOIN tbl2 AS z1 ON z1.Primary_dlr_num = SU.Sell_PDn
) INNER JOIN tblZipCodes AS Z3 ON z1.DlrZip = z3.Zip_Code
) INNER JOIN tbl2 AS z2 ON z2.Primary_dlr_num = SU.buy_PDn
) INNER JOIN tblZipCodes AS Z4 ON z2.DlrZip = z4.Zip_Code
)
WHERE su.YEAR = 2016
AND su.TRANSACTION = 'S'
AND month = 9
GROUP BY su.Buy_PDN
这里我的交易有两个pdn,这两个pdn在tbl2中有邮政编码,而tblZipCode则为每个邮政编码有经纬度。因此,此查询将找到所有不同的BuyPDN,并在本月找到所有SELLPDN的平均距离。
但执行查询需要40多分钟。如何进行优化。我尝试删除平均部分,但仍然需要花费很长时间才能得出结论,加入需要很长时间。
答案 0 :(得分:0)
在distance
中为tbl1
创建一个字段。它可以是Access 2010+上的计算字段,也可以是通过每个buy_PDn
和Sell_PDn
更新的脚本重新计算的字段。然后,计算成本将均匀分布在表更新上,报告将准备好所有数据。