在存储过程中, 用变量替代参数有助于提高执行效率吗
在存储过程中, 用变量代替参数有助于提高执行效率吗?今天执行一个存储过程, 发现2个小时都执行不完, 郁闷…
在存储过程中, 用变量代替参数有助于提高执行效率吗?
今天执行一个存储过程, 发现2个小时都执行不完, 郁闷……
后来改为用SQL语句直接在查询分析器中直接执行, 6到7分钟就搞定了。
搜索了很多内容, 据说变量代替参数是有用的, 死马当活马医地将存储过程的参数改为变量试了下, 居然也是6到7分钟, ……
诸位大侠, 请问这个有 具体依据 吗?
原来:
@dbIdBIGINT,
@areaIdBIGINT,
@timeKeyINT
==>
@dbIdBIGINT,
@areaIdBIGINT,
@timeKeyINT
AS
BEGIN
DECLARE @dbId_repBIGINT
DECLARE @areaId_repBIGINT
DECLARE @timeKey_repINT
SELECT @dbId_rep=@dbId,
@areaId_rep = @areaId,
@timeKey_rep = @timeKey
-- ....
[解决办法]应该不是这个问题。
[解决办法]应该没有关系,传入的参数其实也是变量
[解决办法]應該是其它問題
[解决办法]这个应该没有影响吧?
[解决办法]跟这个无关,分析要看执行计划..
[解决办法]初看是参数嗅探问题,
你可以用option(recompile) 先试一下。
另外,你怎么不把详细的T-SQL发出来啊。
[解决办法]我也觉得应该没影响
[解决办法]瞎说,前后矛盾,
如果是tempdb的问题,那你用SP的参数的时候就慢,成本地变量就变快啦?
[解决办法]TEMPDB能不能设置为简单恢复模式
频繁的读写是会导致TEMPDB增长过快的。
[解决办法]tempdb本来就是简单模式,应该初始化大一点,不然频繁增长收缩肯定有性能问题
[解决办法]