ホームページ  >  記事  >  データベース  >  SQL优化之存储过程强制编译

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

WBOY
WBOYオリジナル
2016-06-07 17:43:581239ブラウズ

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 までご連絡ください。