2014-06-09 164 views
1

我需要一些幫助爲SQL Server編寫此查詢。嵌套的部分使這個查詢花費近一分鐘的時間在27,000條記錄上運行。我認爲它需要臨時表,但我以前沒有這樣做過。有人可以給我一個想法,我可能會這樣做嗎?SQL Server嵌套查詢性能

SELECT 
r.ID, 
r.CloseDate, 
r.RepairOrderStatus 'Repair Status', 
p.PartNumber ModInPN, 
p.PartDescription ModInDesc, 
pr.RMANumber, 
c.FullName OpsTech, 
    (SELECT COUNT (*) 
    FROM dbo.TestPartsReplaced tpr 
    WHERE tpr.RepairID = r.ID) Qty 
FROM dbo.RepairTicket r LEFT JOIN dbo.Parts p ON r.ModuleInPartID = p.ID 
LEFT JOIN dbo.PartReturn pr ON r.PartReturnID = pr.ID 
LEFT JOIN dbo.Contact c ON c.ID = r.ContactTechID 

回答

2

試試這個....

SELECT 
     r.ID, 
     r.CloseDate, 
     r.RepairOrderStatus 'Repair Status', 
     p.PartNumber ModInPN, 
     p.PartDescription ModInDesc, 
     pr.RMANumber, 
     c.FullName OpsTech, 
     Qty.[Count] AS Quantity 
FROM dbo.RepairTicket r LEFT JOIN dbo.Parts p ON r.ModuleInPartID = p.ID 
LEFT JOIN dbo.PartReturn pr ON r.PartReturnID = pr.ID 
LEFT JOIN dbo.Contact c ON c.ID = r.ContactTechID 
LEFT JOIN (SELECT RepairID , COUNT (*) AS [Count] 
      FROM dbo.TestPartsReplaced 
      GROUP BY RepairID) Qty ON Qty.RepairID = r.ID 
+0

M.Ali嗨!你能告訴我在OP的查詢中有什麼問題,以及你是如何得到你的答案的?我仍然是一個新手,我無法理解。請幫忙。謝謝。 Chenqui。 –

+1

在外部查詢返回的每一行執行select中的相關子查詢。現在,這個FROM子句中的子查詢將執行一次,並與從其他表返回的結果進行連接。我認爲OP將通過將這個子查詢放在from子句中來獲得一些性能。 –

+0

這是完美的M.Ali。它的運行速度與沒有嵌套查詢時一樣快。非常感謝;我學到了很多東西。 Mikeo – Mikeo