首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在存储过程中, 用变量替代参数有助于提高执行效率吗

2013-09-11 
在存储过程中, 用变量代替参数有助于提高执行效率吗?今天执行一个存储过程, 发现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发出来啊。

[解决办法]
我也觉得应该没影响
[解决办法]
引用:
Quote: 引用:

应该不是这个问题。

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

引用:
應該是其它問題

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

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

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

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



后来发现, 是因为 tempdb 增长过快导致了这个问题[存储过程执行很慢], 感谢各位捧场。

不好意思, 再问问, 如何不让 tempdb 增长太快? 几乎5分钟就可以增长4GB!


瞎说,前后矛盾,
如果是tempdb的问题,那你用SP的参数的时候就慢,成本地变量就变快啦?
[解决办法]
TEMPDB能不能设置为简单恢复模式 
频繁的读写是会导致TEMPDB增长过快的。
[解决办法]
tempdb本来就是简单模式,应该初始化大一点,不然频繁增长收缩肯定有性能问题
[解决办法]

热点排行