我想優化一個由前同事編寫的緩慢運行的查詢。他沒有使用存儲過程,並直接在ADO.NET中編寫查詢,查詢速度太慢。需要優化計數查詢
我試圖將查詢轉換爲單個SP。這個特殊的SELECT
聲明需要很長時間。 @PMasterTable被使用邏輯在最後一個條件內被使用了太多次。
INSERT INTO @PMasterTable
SELECT R.PId
FROM PRecord R
WHERE R.PId IN(@aId , @nId)
SELECT @DeleteCount = COUNT(P.Id)
FROM Result P
WHERE(P.Approved IS NULL
OR P.Approved = 0)
AND P.ACTION = 'D'
AND P.Id NOT IN(SELECT Id FROM ARecords)
AND P.PId IN(SELECT PId FROM @PMasterTable);
我寫了SQL查詢已經有一段時間了,所以我有點生疏了!
你有沒有做過任何形式的查詢計劃的分析?它是否緩慢,因爲你的索引不好? – Dismissile
還沒有,我首先將查詢轉換爲SP,幾乎所有查詢都是上述SELECT查詢的某種變體。我認爲查詢在NOT IN/IN條件下花費時間會導致結果很大。 – RCuber
你是否使用臨時表而不是變量? – Roshan