1
私はストアドプロシージャが2,3日後に遅くなるSQL Serverの問題に直面しています。ストアドプロシージャは数日おきに遅くなります
以下は私のストアドプロシージャのサンプルです。
これはサーバー側のキャッシュの問題でしょうか?問題を解決するためにサーバーのキャッシュサイズを増やすことはできますか?
通常、ストアドプロシージャはデータを1秒で返します。
@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- sniffing-or-spoofing-in-sql-server – sgeddes
@sgeddesが遅くなると、特定の入力に対してのみ遅くなります。いくつかの入力ではより速く動作します。 – Hemal
#tempを避けるようにしてください。大きな結果を意味し、実行が遅く、回避策を見つけることがあります。 –