最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
将一个更新划分为几个批次
时间:2008-01-24 编辑:简简单单 来源:一聚教程网
答:如果知道哪些行尚未被更新,您可以使用简单的谓词来排除已更新的行,ROWCOUNT设置可以帮助您批量分割数据。以下的代码清单说明了如何使用该设置:
SET ROWCOUNT 1000
WHILE (1=1) BEGIN
BEGIN TRANSACTION
UPDATE...set ...,MyLastUpdate='date',...WHERE
MyLastUpdate < 'date'
-- 更新1000未更新行
IF @@ROWCOUNT = 0
BEGIN
COMMIT TRANSACTION
BREAK
END
COMMIT TRANSACTION
END
在指定的行数返回后,ROWCOUNT将使SQL Server停止查询处理。这项技术很有用,因为它避免了大量更新所致的并发命中;更新中的行数越少,更新任务使其他用户不能访问该数据的可能性就越小。结合事务日志备份,这一方法还可以使您的事务日志的大小降至最低。
如果没有识别已更新行的机制,您可以使用游标遍历所有数据并提交每个x值。但是,游标占用服务器资源的时间通常要多于基于集合的语句。
―Microsoft SQL Server开发团队
-
上一个: 如何识别真实和自动创建的索引?
-
下一个: 一种基于记录集查找特定行的方法
相关文章
- 谷歌发布iOS版Gboard更新 新增两大功能 08-01
- 阴阳师体验服7月28日更新 增加百鬼弈玩法 07-28
- iOS 11 beta 4带来不少更新 07-25
- 阴阳师7月21日更新内容汇总 暗黑BOSS及新皮肤上线 07-19
- 火影忍者手游7月13日版本更新 决斗场可Ban忍者 07-12
- iOS 11 beta 3更新内容及新功能 07-11