我有一个查询,我试图优化但没有太多成功。有两张表,一张是主要数据,另一张是特定事件发生时的时间戳。这些表格使用adID的公共密钥进行关联。我试图执行一个查询,从主表中获取所有时间戳和其他数据。我有它的工作,但我想优化,所以它运行得更快。如何优化具有多个子查询的SELECT语句
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
对此的任何帮助表示赞赏。我对SQL Server不太熟悉,所以我不太熟悉如何优化这些查询。
有多少行呢查询回报? “Tracking”有哪些索引? – 2013-02-15 20:09:36