在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等),
1、一是基于WITH RECOMPILE的存储过程级别重编译,
2、一种是基于OPTION(RECOMPILE)的语句级重编译。
CREATE PROCEDURE TestRecompile_WithRecompile
(
@p_parameter int
)
WITH RECOMPILE
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM TestRecompile WHERE Id = @p_parameter OR @p_parameter IS NULL
END
GO
CREATE PROCEDURE TestRecompile_OptionRecompile
(
@p_parameter VARCHAR(50)
)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM TestRecompile WHERE Id = @p_parameter OR @p_parameter IS NULL OPTION(RECOMPILE)
END
GO