在存储过程中, 用变量代替参数有助于提高执行效率吗?
今天执行一个存储过程, 发现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发出来啊。
------解决方案--------------------我也觉得应该没影响
------解决方案--------------------