问题一:存储过程放在查询分析器中执行,大概耗时5秒左右便可成功执行,可是在网站中执行却会超时sql
1. 将该存储过程放到查询分析器中执行,大概耗时5秒左右便可成功执行,可是在网站中执行却会超时;缓存
2. 经查阅资料,这里存储过程的执行计划是被缓存了,参数不一样,仍是按照老的执行计划查询,效率也会不一样测试
3. 解决办法:网站
在存储过程的定义上,加上 WITH RECOMPILE ,这样针对不一样的类型查询,能够强制从新编译执行过程blog
这样每次执行存储过程的时候就会从新分析执行计划,提升效率;编译
问题二:直接在查询分析器中执行存储过程很慢,可是把存储过程当中的内容拿出来执行很快class
1. 缘由:存储过程的参数嗅探效率
2. 解决办法:变量
把存储过程的参数赋值给了存储过程当中自定义的变量,整个存储过程当中使用这个变量来代替参数,而且在参数赋值的地方加上OPTION (OPTIMIZE FOR UNKNOWN)im
通过测试,存储过程执行时间和sql单独拿出执行时间一致;