全表Update语句执行方案
产品表结构如下:
ID 列2 列3 等
A2012030901000001
现增加2列截取ID 中的年份和产品类型作为查询使用分别是编号ID的如下:
ID Year Type
A2012030901000001 2012 01
脚本:
update 产品表 set Year=substring([ID],(2),(4)),Type=substring([ID],(10),(2))
问题有以下2个:
1\表中数据超过2000万条,请问这种全表update对Year和Type创建索引是否有用,有没有其他更快效率的执行方式?
2\如果执行长时间未完成,为避免锁表如何执行能及时的立刻回滚?
[解决办法]
全表更新:
步骤1:select 不需要更改的字段,需要更改的字段 as 新字段 into #t
from 源表
步骤2:truncate table 源表
步骤3:insert into 源表 select * from #t
[解决办法]