SQL优化之存储过程强制编译
程序员文章站
2022-04-22 09:03:08
...
ASP.NET调用SQL后台存储过程时,有时突然就变得很慢,在后台直接执行存储过程没问题,但在前台调用存储过程时就是很慢,而且在前台调用成功后,再次调用还是一样的慢,但更新一下存储过程再调用就很快了。但这始终不能彻底解决问题,过段时间又会出来同样的
ASP.NET调用SQL后台存储过程时,有时突然就变得很慢,在后台直接执行存储过程没问题,但在前台调用存储过程时就是很慢,而且在前台调用成功后,网站空间,再次调用还是一样的慢,但更新一下存储过程再调用就很快了。但这始终不能彻底解决问题,过段时间又会出来同样的问题。环境(NET4.0+SQL2008R2)
解决办法:
方法一:在可能比较耗时的语句后面加上option(recompile)
方法二:强制编译存储过程
SQL Server 提供三种重新编译存储过程的方法:
(1)、sp_recompile 系统存储过程强制在下次运行存储过程时进行重新编译。
示例:exec sp_recompile 存储过程名
(2)、创建存储过程时在其定义中指定 WITH RECOMPILE 选项,美国空间,表明 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都重新编译。
示例:Create Proc 存储过程名 WITH RECOMPILE AS 参数
(3)、在执行存储过程时指定 WITH RECOMPILE 选项,美国空间,可强制对存储过程进行重新编译。仅当所提供的参数不典型,或者自创建该存储过程后数据发生显著更改时才应使用此选项。
示例:存储过程名 WITH RECOMPILE