ディーラーの月間平均距離を見つけるためにクエリを書きましたが、クエリはSQLでかなり高速に動作していますが、同じクエリはMS Accessで無限の時間を費やしています。クエリを最適化するにはどうすればよいですか。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
ここで私は2つのPDNを有するトランザクションを備えています、これらの二つのPDNはTBL2にターンtblZipCodeであり郵便番号を持っているが、各ジッパーのための緯度と経度を有しています。したがって、このクエリでは、すべての別個のBuyPDNが検索され、今月のすべてのSELLPDNの平均距離が検索されます。
ただし、クエリの実行には40分以上かかります。どのように最適化することができます。私は平均的な部分を削除しようとしましたが、依然としてクエリに時間がかかっていたため、参加には時間がかかります。
次のことを明確にしてください:MS SQLで高速に動作しますか? Accessのテーブルはリンクされているかローカルですか?リンクされている場合、リモートデータベースとは何ですか?まず、結合で使用されるすべての列にインデックスがあり、WHERE句 –
がSQL Serverにあるかどうかを確認します。テーブルはリンクされておらず、ローカルです。アプリケーションは非常に古いので、私たちは主キーを持っていません。 –
パススルーはなぜですか? – Fionnuala