Ich benutze MSSQL. Ich habe eine gespeicherte Prozedur, die für einige Tage funktioniert und später wird es langsam. Ich habe erfahren, dass Parameter Sniffing dafür geeignet ist. Wie auch immer, nach der Implementierung wurde es langsam für immer. Ich habe auch versucht, Job neu zu kompilieren. Ich war sofort mit der gleichen Langsamkeit konfrontiert.Parameter Sniffing funktioniert nicht
Kann jemand bitte mir dabei helfen?
Unten ist die Struktur meiner Stored Procedure.
@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
Ich habe diesen Ansatz versucht. aber es verlangsamt sich sofort damit. – Hemal