我有一个包含此列的表(除其他外):
id int identity(1,1) not null
我添加了一个列来存储插入记录的大致日期:
insertdate smalldatetime null
我已经填写了insertdate
我可以使用在相关表和日志的取证搜索中找到的最早参考资料的地方。但是,这确实会在数据中留下许多 NULL“空白”,以及 ID 号较低的记录具有insertdate
比后续 ID 值更新的值的情况。
该identity
属性提供了充分的基础来假设必须在任何具有更高ID
值的记录之前创建记录,因此我决定更新insertdate
它为 null 或后续 ID 具有更早日期的任何记录:
UPDATE
table
SET
insertdate = (SELECT MIN(insertdate)
FROM table t2
WHERE
t2.id >= table.id
AND t2.insertdate IS NOT NULL
)
不幸的是,像这样的更新正在吃服务器的午餐...... 1 小时并计算 250 万条记录。
关于如何更有效地做到这一点的任何想法?
它只需要完成一次,但这是一个生产服务器,所以我宁愿不要锁定表超过必要的时间。