我正在運行一個需要很長時間的存儲過程,因此我必須將超時時間增加到將近3分鐘,任何人都可以提供有關如何減少要執行的存儲過程,它可以在100-500個代碼上正常工作,但是當代碼超過20000時,它會變慢並且需要3-4分鐘,下面是sp,誰能幫我優化它。運行存儲過程時的性能問題
@GUID uniqueidentifier
-- Insert statements for procedure here
SELECT
COUNT(Code.allocatedVendorID) AS Amt,
MIN(Code.dateAllocated) AS dateAllocated,
derivedtbl_1.startID, derivedtbl_2.endID,
tbVendor.name,
Code.unitCost, Code.isFree, Code.isAcademic,
Code.isVoided, Code.GUID, Code.expiryDate
FROM
Code
INNER JOIN
(SELECT MIN(CodeID) AS startID, GUID
FROM Code AS tbAccessCode_1
GROUP BY GUID) AS derivedtbl_1
ON Code.GUID = derivedtbl_1.GUID
INNER JOIN
(SELECT MAX(accessCodeID) AS endID, GUID
FROM Code AS tbAccessCode_1
GROUP BY GUID) AS derivedtbl_2
ON Code.GUID = derivedtbl_2.GUID
INNER JOIN tbVendor
ON Code.allocatedVendorID = tbVendor.vendorID
WHERE (Code.GUID = @GUID) AND (Code.allocatedVendorID > 0)
GROUP BY
derivedtbl_1.startID, derivedtbl_2.endID,
tbVendor.name,
Code.unitCost, Code.isFree, Code.isAcademic,
Code.isVoided, Code.GUID, Code.expiryDate
ORDER BY dateAllocated DESC
你在的地方有哪些指標? – JNK 2012-01-18 15:34:02
代碼和vendorID是索引 – 2012-01-18 15:45:43
多個子查詢有可能顯着影響性能。 – 2012-01-18 16:06:59