これは私のSQLクエリです-Accessで使用しています。それは望ましい結果を提供しています。しかし、アプローチが正しいかどうかについて意見を求めただけです。これをどのようにスピードアップできますか。
SELECT INVDETAILS2.F5
, INVDETAILS2.F16
, ExpectedResult.DLID
, ExpectedResult.NumRows
FROM INVDETAILS2
INNER
JOIN (INVDL INNER JOIN ExpectedResult ON INVDL.DLID =ExpectedResult.DLID)
ON (INVDETAILS2.F14 = ROUND(ExpectedResult.Total))
AND (INVDETAILS2.F1 = INVDL.RegionCode)
WHERE INVDETAILS2.F29 ='2013-03-06'
AND INVDETAILS2.F5 IN (SELECT INVDETAILS2.F5
FROM (ExpectedResult
INNER JOIN INVDL
ON ExpectedResult.DLID = INVDL.DLID)
INNER JOIN INVDETAILS2
ON INVDL.RegionCode = INVDETAILS2.F1
AND round(ExpectedResult.Total)
= INVDETAILS2.F14
WHERE INVDETAILS2.F29='2013-03-06'
GROUP BY INVDETAILS2.F5
HAVING Count(ExpectedResult.DLID)<2
)
;
「ExpectedResult」の行のおおよその数-百万の「INVDL」-80,000の「INVDETAILS」-300,000-合計、1つの日付の場合-約-10,000、その後、日付ごとの各地域でさらに少なくなります。
可能であれば、より適切なクエリを提供してください。