update是一个整体事务,没有提交或者回滚前都不会直接影响数据库的数据。如果不需要条件update,可以考虑下面步骤:1. 备份这个表。2.select xxxx,REPLACE(DOCKEYVAL, '001,', '141,') as DOCKEYVAL ,XXXX into #t FROM 你的表,其中xxx就是不需要更新的列,保持表结构的列名一致。3. truncate table 你的表 4. insert into 你的表(列一一对应) select * from #t
select * into BAS_AUDITRCRD_OLD151 from (select * from (select ROW_NUMBER() over (order by asnm) num,* from BAS_AUDITRCRD_OLD) t where num between 1500001 and 1510000) p; 我现在用这种方式来分批把数据导入新表,然后更新表,然后再插回去
建议如果真的要更新的话,将数据库设置为简单恢复模式,还有就是能不能想办法一部分一部分的分批去更新?
2、既然数据量大,那只有提高IO(分享日志与数据到独立磁盘上)能力
1.Sys.Partitions这个是不是只能查看表有多少条数据等,没有更新数据的功能是吧?
2.提高IO能力,具体怎么做呢,能不能指点一二?
在你的主键上添加一个非聚集索引
问题2
方案1:先干掉与这个字段相关的索引,然后做update动作后再把索引重建上去,缺点这样其他用户要同时使用这个表就不行了
然后在这张表上进行各种操作就不影响其他用户了,update完毕以后,用 tablediff 方式对比是否有差异,并处理,再通过sp_rename的方式切换回去,最后用 tablediff 确认没有其他修改,工作就完成了。
老是提示发帖错误- -我就分多次发帖了
我现在用这种方式来分批把数据导入新表,然后更新表,然后再插回去