将一个更新划分为几个批次

2016-01-29 16:19 3 1 收藏

将一个更新划分为几个批次,将一个更新划分为几个批次

【 tulaoshi.com - SQLServer 】

 

问:我想以一次5,000行的方式批量更新一个大型表,但我不知道怎样分割数据。该表不包含增量数字或整数主键。怎样才能在保持良好性能的同时实现数据更新呢?

答:如果知道哪些行尚未被更新,您可以使用简单的谓词来排除已更新的行,ROWCOUNT设置可以帮助您批量分割数据。以下的代码清单说明了如何使用该设置:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

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开发团队

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

 

 

来源:https://www.tulaoshi.com/n/20160129/1498300.html

延伸阅读
标签: 微信 手机
登录微信 登录你(已经绑定了手机号)的微信,点击右上角的“┇”图标。 点击设置 在弹出的菜单中点击“设置”。 点击账号 再点击“我的账号”。 确保其它绑定设置 开始本步操作前,请确保你已经绑定了“QQ号”或设置了“微信号”(如图中所示的黄色阴影部分,两者至少有一个),如果没有请先点击“QQ号”或“微信号”进行设...
如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: Code: 代码如下: INSERT INTO 目标表 SELECT * FROM
高血压分级 高血压能分为几个等级 高血压是现代人中比较常见的一种疾病症状了,对于患有高血压的人来说,平时的生活习惯是重要的,那么大家知道高血压分级是怎么样的吗,高血压的治疗与饮食是怎么样的呢,高血压症状是什么呢,一起来了解一下吧。 随着现代人的生活水平的提高,许多人也都是患上了高血压的病症,对于高...
标签: word
将Word2010中多个文档合并为一个   今天分享的是教你快速将word2010中多个文档合并为一个。这样可以省去你一个一个的粘贴复制的麻烦,喜欢的朋友可以学习下。 ①单击进入插入选项卡; ②然后在文本选项组中点击对象旁边的小三角,在弹出的下拉菜单中选择文件中的文字; ③接着,选择要合并到当前文档中的文件。您...
将iPhone变成一个全功能录音笔   G8R软件有限责任公司开发的应用程序CaptureAudio是一个功能很强大的应用,它提供了直接用iPhone记录音频的新方法。如果你正在寻找语音记录应用程序,那么它是你的最佳选择。 CaptureAudio 虽说笔者个人现在很少录音了,但是录音应用是笔者觉得上学的时候非常有用的东西之一,因为它在做课堂...

经验教程

506

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部