当前位置: 代码迷 >> Sql Server >> sql存储过程比sql语句执行慢很多,该怎么处理
  详细解决方案

sql存储过程比sql语句执行慢很多,该怎么处理

热度:39   发布时间:2016-04-24 10:08:03.0
sql存储过程比sql语句执行慢很多
最近发现某几个存储过程执行时间很长,就拿出来分析, 发现sql语句执行居然很快,而存储过程反而很慢。   查询的表是个数据量很大的表,时不时都有数据插入。
我的存储过程写的是,先创建一个临时表  #abc,然后把数据统计到这个临时表,然后再查询出来。
sql版本 08。
求解答~
------解决方案--------------------
贴出存储过程才可以分析
------解决方案--------------------
(1)可能是发生了参数嗅探,第一次赋给存储过程的输入参数,会为该存储过程生成一个基于输入参数的执行计划,因此如果第一次输入的参数不具有代表性(例如大部分查询输入的参数都是A值,但第一次执行存储过程时输入的是B值),就有可能比即席查询慢,尽管即席查询需要重新编译执行计划,但选择了更有效率的计划。
尝试使用和即席查询一样的参数,来执行存储过程,然后对比一下两者的执行计划。
(2)通常存储过程最上面有自带的set设置,如set ansi_nulls on,而即席查询通常没有包含,这些set设置也会影响执行计划。
尝试在即席查询中添加上,与存储过程一样的set设置,然后再对比一下执行计划。
------解决方案--------------------
参数嗅探的可能性比较大
  相关解决方案