寻找加快此查询的建议。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 - 80000条记录
ExpectedResult - Ten Million records
qtDetails - 12,000条记录
内部查询将产生大约5000 - 8000条记录。尝试将内部查询的结果保存在表中。然后使用从qTempTable中选择F5。但还是要花很多时间。
任何帮助都将是非常感激的。
数据类型:
qtdetails.F5 = Number
qtdetails.F16 = Text
ExpectedResult.NumRows = Number
INVDL.DLID = Number
ExpectedResult.DLID = Number
INVDL.RegionCode = Text
qtdetails.F1 = Text
在查询中涉及的所有表上重建索引。再次运行查询并检查时间。它将减少执行时间。如果可以的话,我会尽快更新您的查询。
继续查询!