由于其中有动态 SQL,下面的存储过程是否会在每次运行时重新编译?这种方法是否会对性能造成严重影响?
CREATE PROCEDURE MyStoredProcedure
AS
BEGIN
DECLARE @column varchar(3)
SELECT @column = 'd' + CAST(DAY(GETDATE()) AS char)
EXEC ('SELECT ' + @column + ' FROM t1')
END
答案1
答案2
不,该过程不应该在每次运行时重新编译,即使这样做,调用的性能也不会差很多,因为动态 SQL 已经足够慢了。该过程的这一部分在每次运行时都会被解析和执行。