相关疑难解决方法(0)

带重新编译的存储过程

我有这个存储过程..当我告诉开发人员不推荐使用 Recompile 选项时,他们回答说“这是因为可以使用许多不同的参数调用这个 SP,我们希望优化器获取一个新计划每次调用(不理想,但与使用旧的缓存计划相比,这是一次尝试让它运行得更可靠、速度更快)”

他们说的对吗?有什么方法可以不用重新编译就可以做到这一点

   create PROCEDURE [dbo].[VERIFIER_QUEUE]
   @cas_name varchar(20) = NULL,
   @instance_name varchar(50) = NULL,
   @verifier_id int = NULL,
   @applicant_type VARCHAR(20) = NULL

    WITH RECOMPILE     
    AS

   BEGIN 
SET NOCOUNT ON

DECLARE @cas_name_x varchar(20)
DECLARE @instance_name_x varchar(50)
DECLARE @verifier_id_x int
DECLARE @InstanceId INT
...............
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization execution-plan query-performance

6
推荐指数
1
解决办法
1509
查看次数

何时使用与重新编译

我知道重新编译是什么意思,我知道由于性能问题,没有 dmv 等,大多数时候不建议使用它。

有时在某些情况下它可能有所帮助,但OPTION(RECOMPILE)也可能有所帮助。

那么,什么时候最好使用With Recompileover OPTION(RECOMPILE)?

谢谢。

sql-server stored-procedures t-sql

5
推荐指数
1
解决办法
2443
查看次数