このクエリを高速化するための提案を探しています。Access 2007. 内部クエリには数分かかり、完全なクエリには非常に時間がかかります (40 ~ 80 分)。結果は予想通り。すべてが索引付けされています。
SELECT qtdetails.F5, qtdetails.F16, ExpectedResult.DLID, ExpectedResult.NumRows
FROM qtdetails
INNER JOIN (INVDL
INNER JOIN ExpectedResult
ON INVDL.DLID = ExpectedResult.DLID)
ON (qtdetails.F1 = INVDL.RegionCode)
AND (qtdetails.RoundTotal = ExpectedResult.RoundTotal)
WHERE
(qtdetails.F5 IN (SELECT qtdetails.F5
FROM (ExpectedResult
INNER JOIN INVDL
ON ExpectedResult.DLID = INVDL.DLID)
INNER JOIN qtdetails
ON (INVDL.RegionCode = qtdetails.F1)
AND (ExpectedResult.RoundTotal = qtdetails.RoundTotal)
GROUP BY qtdetails.F5
HAVING (((COUNT(ExpectedResult.DLID)) < 2));
)
);
INVDL - 80,000 レコード
ExpectedResult - 1000 万レコード
qtDetails - 12,000 レコード
内部クエリは、約 5000 ~ 8000 レコードになります。内部クエリの結果をテーブルに保存しようとしました。代わりに、qTempTable から Select F5 を使用します。しかし、まだ多くの時間がかかります。
どんな助けでも非常に高く評価されます。
データ・タイプ :
qtdetails.F5 = Number
qtdetails.F16 = Text
ExpectedResult.NumRows = Number
INVDL.DLID = Number
ExpectedResult.DLID = Number
INVDL.RegionCode = Text
qtdetails.F1 = Text