.NET调用存储过程时,有时候会变的很慢甚至会timeout,但是再执行一下存储过程,再调用就会很快。
解决办法:
1. 在可能比较耗时的语句后面加上option(recompile)
2. 创建存储过程时在其定义中指定 WITH RECOMPILE 选项,表明 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都重新编译。当存储过程的参数值在各次执行间都有较大差异,导致每次均需创建不同的执行计划时,可使用 WITH RECOMPILE 选项。此选项并不常用,因为每次执行存储过程时都必须对其进行重新编译,这样会使存储过程的执行变慢。
在执行存储过程时指定 WITH RECOMPILE 选项,可强制对存储过程进行重新编译。仅当所提供的参数不典型,或者自创建该存储过程后数据发生显著更改时才应使用此选项
本文探讨了.NET环境下调用存储过程时出现的性能问题,特别是timeout现象,提供了解决方案:在耗时语句后使用option(recompile)或创建存储过程时指定WITHRECOMPILE选项。此外,通过指定WITHRECOMPILE选项强制存储过程重新编译,适用于参数变化较大的情况。
9万+

被折叠的 条评论
为什么被折叠?



