|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
问:我想以一次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 在指定的行数返回后,ROWCOUNT将使SQL Server停止查询处理。这项技术很有用,因为它避免了大量更新所致的并发命中;更新中的行数越少,更新任务使其他用户不能访问该数据的可能性就越小。结合事务日志备份,这一方式还可以使您的事务日志的大小降至最低。 假如没有识别已更新行的机制,您可以使用游标遍历所有数据并提交每个x值。但是,游标占用服务器资源的时间通常要多于基于集合的语句。 返回类别: 教程 上一教程: SQL SCRIPT TIPS FOR MS SQL SERVER 下一教程: ACCESS改为SQL需要注重哪几个地方 您可以阅读与"将一个更新划分为几个批次"相关的教程: · 将列更新从一个表传递到另一个表 · 将列更新从一个表传递到另一个表 · 一个复合查询方式 · 利用数据库复制技术 实现数据同步更新 · 从SQL中的一个表中导出HTML文件表格 |
| 快精灵印艺坊 版权所有 |
首页 |
||