我有一個文件表說領域可能消除這個子查詢?
DocumentID int - PK and autoincrement
LastStatusChangedDateTime - datetime
JurisdictionID - int
DocumentStatusID - int
現在我想在名爲CanChangeStatus
計算列帶上。這就像一個隊列。所以,如果文件是第一個在它的狀態可以改變。這是我的查詢:
Select d.DocumentID,
(
Select Cast(Case When d.DocumentID = v.DocumentID Then 1 Else 0 End as bit)
From
(
Select Top 1 DocumentID
From Documents
Where JurisdictionID = d.JurisdictionID
And
DocumentStatusID = d.DocumentStatusID
Order By LastStatusChangedDateTime
) v
) as CanChangeStatus
From Documents d
指數是那裏JurisdictionID
和DocumentStatusID
。罪魁禍首是子查詢 - 我試圖計算CanChangeStatus
的方式。有什麼辦法可以加快速度或將此子查詢轉換爲連接,因爲連接是主要是快於子查詢?
這是否真的需要在SQL做或可能多數民衆贊成處理這個回報執行的操作?它消除了您的子查詢和連接,並將邏輯放入應用程序中。 – 2013-04-05 06:43:39