日期:2014-05-17  浏览次数:20503 次

在存储过程中, 用变量代替参数有助于提高执行效率吗?
今天执行一个存储过程, 发现2个小时都执行不完, 郁闷……

后来改为用SQL语句直接在查询分析器中直接执行, 6到7分钟就搞定了。

搜索了很多内容, 据说变量代替参数是有用的, 死马当活马医地将存储过程的参数改为变量试了下, 居然也是6到7分钟, ……

诸位大侠, 请问这个有 具体依据 吗?

原来:

@dbId BIGINT,
@areaId BIGINT,
@timeKey INT

==>

@dbId BIGINT,
@areaId BIGINT,
@timeKey INT
AS
BEGIN
DECLARE @dbId_rep BIGINT
DECLARE @areaId_rep BIGINT
DECLARE @timeKey_rep INT

SELECT @dbId_rep=@dbId, 
   @areaId_rep = @areaId, 
   @timeKey_rep = @timeKey
-- ....

------解决方案--------------------
应该不是这个问题。
------解决方案--------------------
应该没有关系,传入的参数其实也是变量
------解决方案--------------------
應該是其它問題
------解决方案--------------------
这个应该没有影响吧?
------解决方案--------------------
跟这个无关,分析要看执行计划..

------解决方案--------------------
初看是参数嗅探问题,
你可以用option(recompile) 先试一下。
另外,你怎么不把详细的T-SQL发出来啊。

------解决方案--------------------
我也觉得应该没影响
------解决方案--------------------
引用:
Quote: 引用:

应该不是这个问题。

引用:
应该没有关系,传入的参数其实也是变量

引用:
應該是其它問題

引用:
这个应该没有影响吧?

引用:
跟这个无关,分析要看执行计划..

引用:
初看是参数嗅探问题,
你可以用option(recompile) 先试一下。
另外,你怎么不把详细的T-SQL发出来啊。

引用:
我也觉得应该没影响