小编Leo*_*eon的帖子

如果参数存储在局部变量中,则更好的执行计划

我有两个存储过程。这个速度非常快(约 2 秒)

CREATE PROCEDURE [schema].[Test_fast]
   @week date
AS
BEGIN

    declare @myweek date = @week

    select distinct serial 
    from [schema].[tEventlog]         as e
    join [schema].tEventlogSourceName as s on s.ID = e.FKSourceName
    where s.SourceName = 'source_name'
        and (e.EventCode = 1 or e.EventCode = 9)
        and cast(@myweek as datetime2(3)) <= [Date] 
        and [Date] < dateadd(day, 7, cast(@myweek as datetime2(3)))    
END
Run Code Online (Sandbox Code Playgroud)

而这个运行缓慢(~ 2 小时):

create PROCEDURE [schema].[Test_slow]
   @week date
AS
BEGIN

    select distinct serial 
    from [schema].[tEventlog]         as e
    join [schema].tEventlogSourceName as s on s.ID …
Run Code Online (Sandbox Code Playgroud)

performance sql-server stored-procedures execution-plan parameter query-performance

8
推荐指数
1
解决办法
3609
查看次数