最適化しようとしているクエリがありますが、あまり成功していません。2つのテーブルがあります。1つはメインデータを持ち、もう1つは特定のイベントが発生したときのタイムスタンプを持ちます。テーブルは、adIDの共通キーを使用してリレーショナルになっています。メインテーブルからすべてのタイムスタンプとその他のデータを取得するクエリを実行しようとしています。私はそれを機能させていますが、より速く実行されるように最適化しようとしています。
SELECT a.ID,a.repID,a.artistID,
(
SELECT TOP 1 c.timestamp
FROM Tracking AS c
WHERE statusID = 4
AND c.ID = a.ID
ORDER BY c.timestamp ASC
)
AS created,
(
SELECT TOP 1 d.timestamp
FROM Tracking AS d
WHERE statusID = 5
AND d.ID = a.ID
ORDER BY d.timestamp ASC
)
AS claimed,
(
SELECT TOP 1 p.timestamp
FROM Tracking AS p
WHERE statusID = 6
AND p.ID = a.ID
ORDER BY p.timestamp ASC
)
AS proof,
(
SELECT TOP 1 v.timestamp
FROM Tracking AS v
WHERE statusID = 8
AND v.ID = a.ID
ORDER BY v.timestamp ASC
)
AS approved,
(
SELECT count(ID)
FROM Tracking AS t
WHERE statusID = 6
AND t.ID = a.ID
)
AS proofcount
FROM Advertising AS a
WHERE a.statusID = 8
これに関するどんな助けもありがたいです。私はSQLServerにあまり詳しくないので、このようなクエリの最適化にはあまり精通していません。