我已经创建了一个存储过程来获取数据。在这个存储过程中,我已经返回了超过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