使用存储过程很是慢,可是执行SQL很快问题分析

问题一:存储过程放在查询分析器中执行,大概耗时5秒左右便可成功执行,可是在网站中执行却会超时sql

1.    将该存储过程放到查询分析器中执行,大概耗时5秒左右便可成功执行,可是在网站中执行却会超时;缓存

2.       经查阅资料,这里存储过程的执行计划是被缓存了,参数不一样,仍是按照老的执行计划查询,效率也会不一样测试

3.       解决办法:网站

在存储过程的定义上,加上 WITH  RECOMPILE ,这样针对不一样的类型查询,能够强制从新编译执行过程blog

这样每次执行存储过程的时候就会从新分析执行计划,提升效率;编译

 

问题二:直接在查询分析器中执行存储过程很慢,可是把存储过程当中的内容拿出来执行很快class

  1. 缘由:存储过程的参数嗅探效率

2.      解决办法:变量

把存储过程的参数赋值给了存储过程当中自定义的变量,整个存储过程当中使用这个变量来代替参数,而且在参数赋值的地方加上OPTION (OPTIMIZE FOR UNKNOWN)im

通过测试,存储过程执行时间和sql单独拿出执行时间一致;