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

不知道取什么标题,在家过来看看吧。
MSSQL的一个存储过种中,执行完要10几分钟,大概内容是用到游标,根据游标把数据插入到几个表,循环外是更新这几个表的数据,我现在想把,更新也放到循环里面,这样效率是不是会高一点,觉得刚插入数据的表应该会存在缓存中,然后就可以直接修改这个表的数据不用重新查找定位。

------解决方案--------------------
batch的比你用游标一行行更新要快
------解决方案--------------------
更新放循环里大概不会有效率,楼主不妨试试,游标里是一行数据一行数据跑的,放更新的话也就是一行一行去更新,这基本谈不上效率了,放外边起码还是正常的更新处理。
------解决方案--------------------
查看执行计划,看耗时的环节在哪里,才好针对性的优化..
------解决方案--------------------
循环是一条条语句执行,大表会很慢.
可以尝试通过临时表,为中间数据,批量更新表,速度会快很多

------解决方案--------------------
使用游标对性能开销很大。

肯定直接的UPDATE操作是最快的,如果必须用游标,

在申明游标的时候

设置为可进的游标快于默认的那种

declare c cursor
local static read_only forward_only
for

可以加快一点点效率。。只能帮助你到这了
------解决方案--------------------
如果你的游标中涉及的表并没有什么上下关联性,比如必须先处理第一个表,然后获取某些数据,再到游标处理生成第二张表,那么个人觉得没必要放到游标里面处理,直接一次性获取出来然后update。至于为什么要用游标,你要先了解目的,并不是游标就是错误的。它有其存在的价值和意义。