>  기사  >  데이터 베이스  >  SQL优化之存储过程强制编译

SQL优化之存储过程强制编译

WBOY
WBOY원래의
2016-06-07 17:43:581203검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.