我已經創建了一個存儲過程來獲取數據。在這個存儲過程中,我已經返回了超過5+的表和表,存儲了超過20k +的數據。所以現在我已經運行了存儲過程,以至於我在1分鐘以上的時間內獲取數據。我只想在1秒鐘內獲取數據。我也設置了SET NOCOUNT ON;
並且還創建了缺失的索引。儘管如此,我還是得到了獲取數據的時間。如何提高SQL Server中使用存儲過程獲取數據的速度?
這是我的查詢=>
SET NOCOUNT ON;
DECLARE @CurMon int
DECLARE @year nvarchar(max)
SELECT @CurMon = month(getdate())
SELECT @year = year(getdate())
SELECT
FORMAT(dateadd(MM, T.i, getdate()), 'MMM-yy') AS DateColumn,
CASE
WHEN uf.TotalCount IS NULL
THEN 0
ELSE uf.TotalCount
END AS TotalCount
FROM
(VALUES ([email protected]),([email protected]),([email protected]),([email protected]),([email protected]),([email protected]),([email protected]), ([email protected]), ([email protected]), ([email protected]), ([email protected]), ([email protected])) AS T(i)
OUTER APPLY
(SELECT DISTINCT
COUNT(datepart(MM, InsertDateTime)) OVER (PARTITION BY datepart(MM, InsertDateTime)) AS TotalCount
FROM
User
WHERE
DATEDIFF(mm, UF.InsertDateTime, DATEADD(mm, T.i, GETDATE())) = 0
AND IsLogin = 1) uf
ORDER BY
DATEPART(MM, CONVERT(DATETIME, FORMAT(dateadd(MM, T.i, GETDATE()), 'MMMM') + '01 ' + @year, 110))
我有這樣的查詢像這樣在這裏請讓我怎麼能提高該SP。
如果沒有關於表結構,現有索引,解釋計劃和一些示例數據的一些想法,這很難回答。 – GolezTrol
使用查詢分析器來檢查發生了什麼。執行計劃也可以幫助解決您的問題。上傳一個,請 –
@BerndOtt,但我看完執行計劃後創建了所有缺少的索引。但我仍然遇到同樣的問題 – Edit