带RECOMPILE的存储过程执行计划

时间:2020-10-15 03:27:36

标签: sql sql-server tsql sql-server-2016

我有一个存储过程,该过程在SQL Server上的作业中每5分钟运行一次。可以预期,该作业将在80%的时间内运行,但没有结果,但是当它确实有要处理的数据时,这将是一个漫长的过程。 代码如下所示。

IF exists (Select top 1 col1 from tbl1 where processed = '0' )
BEGIN
    HUGE PROCESS with multiple selects joins and updates
END

执行计划将如何评估此SP?这是一种罕见的情况,与WITH RECOMPILE一起使用是最佳选择吗?

1 个答案:

答案 0 :(得分:1)

如果在SQL Server Management Studio中使用Include Actual Execution Plan选项,则会看到将IF表达式评估为false时,其主体的运算符未包括在执行计划中。

因此,无需担心-SQL引擎将使用正确的执行计划,并且不会接触数据。

recompile选项在某些查询中可能会有所帮助,但我相信您现在可以跳过它。

相关问题