他の多くの助けを借りて、テーブルのレコード間のマイナス(+または - )の差を計算するこのSQL文があります。問題は、計算された値に基準(> 0)を追加すると、クエリが大幅に遅くなることです。他のフィールドに基準を追加すると、予想どおりに動作します(長い遅延はありません)。条件を追加した後に遅く実行されるクエリ
SELECT T1.Date,
T1.Route,
T1.BookingID,
T1.StreetNumber,
T1.Street,
T1.Arrive,
T1.Perform,
T1.Miles,
T1.Miles - (SELECT Miles
FROM Test1 AS T2
WHERE T2.Route = T1.Route
AND T2.IDNumber = (SELECT Min(IDNumber)
FROM Test1 AS T3
WHERE T3.Route = T1.Route
AND T3.IDNumber >
T1.IDNumber)) AS
Difference
FROM Test1 AS T1
GROUP BY T1.Date,
T1.Route,
T1.BookingID,
T1.StreetNumber,
T1.Street,
T1.Arrive,
T1.Perform,
T1.Miles,
T1.IdNumber,
T1.Status,
T1.Activityy
HAVING ((([T1].[Miles] - (SELECT Miles
FROM Test1 AS T2
WHERE T2.Route = T1.Route
AND T2.IDNumber = (SELECT Min(IDNumber)
FROM Test1 AS T3
WHERE T3.Route = T1.Route
AND T3.IDNumber >
T1.IDNumber))) > 0))
ORDER BY T1.IdNumber;
どのDBを使用していますか?鉛と遅れのソリューションは、DBに特定することができます –
Egadは醜いクエリです! +1 @ConradFrix – Amadan
あなたのクエリは、二重ネストされたcorelatedサブクエリのためにパフォーマンスが低下することになります。 – Bohemian