【原】SQL存储过程调用慢,可是从新编译一下存储过程就很快

.NET调用存储过程时,有时候会变的很慢甚至会timeout,可是再执行一下存储过程,再调用就会很快。html

 

解决办法:缓存

1. 在可能比较耗时的语句后面加上option(recompile)post

2. 建立存储过程时在其定义中指定 WITH RECOMPILE 选项,代表 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都从新编译。当存储过程的参数值在各次执行间都有较大差别,致使每次均需建立不一样的执行计划时,可以使用 WITH RECOMPILE 选项。此选项并不经常使用,由于每次执行存储过程时都必须对其进行从新编译,这样会使存储过程的执行变慢。htm

在执行存储过程时指定 WITH RECOMPILE 选项,可强制对存储过程进行从新编译。仅当所提供的参数不典型,或者自建立该存储过程后数据发生显著更改时才应使用此选项。 blog

转载于:https://www.cnblogs.com/luckylei66/archive/2012/07/30/2615000.htmlio