mssql sqlserver 存储过程重新编译的方法分享


摘要:
下文分享存储过程重新编译的方法,如下所示:


通常情况下,存储过程在第一次运行后都会将经过编译后的版本存储于数据库引擎中,
当我们对数据库执行添加索引、更改索引列、基础表发生物理变化、服务器重启操作后,
存储过程将自动重新编译.
下文将讲述,手动编译存储过程的方法

1.通过sp_recompile系统存储过程指定下次运行存储过程时,重新编译

例:
exec sp_recompile N’dbo.test’
—对表test上的所有存储过程进行重新编译



2.在存储过程的脚本中指定重新编译脚本

例:

 create proc pr_test 
 as  
 select keyId,info from test 
  option(recompile)
 go


3.在存储过程通过with recompile选项,指定每次运行存储过程时,都重新编译

当我们在存储过程创建时,使用with recompile选项时,此时sql引擎将不保存执行计划,
每次执行存储过程时,存储过程都会重新编译
例:

  create proc pr_test
  @a varchar(30)
  with recompile  
as 
  select keyId,info from test
 go


注意事项:
每次都指定存储过程重新编译执行,会导致存储过程执行缓慢,因为sql引擎未缓存执行计划,
所以每次都需从系统中重新分析执行计划和重新缓存数据