1
我在SQL Server中遇到了一個問題,在這個SQL Server中,存儲過程在幾天後變得很慢。存儲過程每隔幾天就會變慢
下面是我的存儲過程的示例。
這可能是服務器端的緩存問題嗎?我可以增加服務器的緩存大小來解決問題嗎?
通常,存儲過程在一秒內返回數據。
@START_VALUE int=null,
@END_VALUE int=null
@UID NVARCHAR(MAX)=null,
AS
BEGIN
SELECT
dbo.TABLE1.ID,
ROW_NUMBER() OVER (ORDER BY TABLE1.UPDATED_ON desc) AS RN,
CONVERT(VARCHAR(10), dbo.TABLE1.DATE, 101) AS TDATE,
CATEGORY = (
SELECT TOP 1 COLUMN1
FROM TABLE5 CT1
WHERE TABLE1.CATEGORY = CT1.CATEGORY_ID
),
TYPETEXT = (
SELECT TOP 1 COLUMN1
FROM TABLE6 CT1
WHERE TABLE1.TYPE = CT1.TYPE_ID
),
IMAGE = STUFF((SELECT DISTINCT ',' + CAST(pm.C1 AS varchar(12))
FROM TABLE2 pm
WHERE pm.ID = TABLE1.ID AND pm.C1 IS NOT NULL AND pm.C1 <> ''
FOR XML PATH('')),
1, 1, '') INTO #tempRecords
FROM dbo.TABLE1
WHERE ((@UID is null OR dbo.TABLE1.ID = @UID)
ORDER BY TABLE1.UPDATED DESC
SELECT @count = COUNT(*) FROM #tempRecords;
SELECT *, CONVERT([int],@count) AS 'TOTAL_RECORDS'
FROM #tempRecords
WHERE #tempRecords.RN BETWEEN CONVERT([bigint], @START_VALUE) AND CONVERT([bigint], @END_VALUE)
END
GO
'
調試性能可能是一個挑戰。當它變慢時,它是否保持緩慢或對特定查詢運行緩慢? ''執行計劃''可以緩存來自參數傳入的錯誤計劃。看看這篇文章'參數嗅探' - 它可能是有幫助的:http://stackoverflow.com/questions/211355/parameter-當它變慢時,嗅探或者哄騙sql-server – sgeddes
@sgeddes,它對於特定的輸入只會變慢。對於一些輸入來說,它的工作速度更快。 – Hemal
儘量避免#temp,結果較大意味着執行速度慢,找到解決辦法 –