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

爱玩的咕噜哥

爱玩的咕噜哥

2016-01-29 16:19

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

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

答:如果知道哪些行尚未被更新,您可以使用简单的谓词来排除已更新的行,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

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

在指定的行数返回后,ROWCOUNT将使SQL Server停止查询处理。这项技术很有用,因为它避免了大量更新所致的并发命中;更新中的行数越少,更新任务使其他用户不能访问该数据的可能性就越小。结合事务日志备份,这一方法还可以使您的事务日志的大小降至最低。

如果没有识别已更新行的机制,您可以使用游标遍历所有数据并提交每个x值。但是,游标占用服务器资源的时间通常要多于基于集合的语句。

—Microsoft SQL Server开发团队

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

 

 
展开更多 50%)
分享

猜你喜欢

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

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

将列更新从一个表传递到另一个表

SQLServer
将列更新从一个表传递到另一个表

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何将一个分区再分成几个分区

电脑网络
如何将一个分区再分成几个分区

法国葡萄酒等级划分 法国葡萄酒分为哪几个级别

法国葡萄酒 葡萄酒等级划分
法国葡萄酒等级划分 法国葡萄酒分为哪几个级别

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

word2007将一个形状更改为另一个形状

word
word2007将一个形状更改为另一个形状

将多个Word文档合并成一个

word
将多个Word文档合并成一个

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

注意安全 赶快修改ADSL猫的密码吧

注意安全 赶快修改ADSL猫的密码吧

看看哪款ADSL虚拟拨号软件适合你?

看看哪款ADSL虚拟拨号软件适合你?
下拉加载更多内容 ↓