この列を含むテーブルがあります(特に):
id int identity(1,1) not null
レコードが挿入されたおおよその日付を格納する列を追加しました。
insertdate smalldatetime null
insertdate
関連するテーブルとログのフォレンジック検索で見つかった最も古い参照を使用して、可能な場所を記入しました。ただし、これにより、データ内に多数の NULL の「ギャップ」が残り、ID 番号が小さいレコードがinsertdate
後続の ID 値よりも新しい値を持つ状況が発生します。
identity
属性は、より高い値を持つレコードよりも前にレコードが作成されたに違いないと仮定するための適切な根拠を提供するため、それが null であるか、後続の ID が以前の日付を持つすべてのレコードに対してID
を更新することにしました。insertdate
UPDATE
table
SET
insertdate = (SELECT MIN(insertdate)
FROM table t2
WHERE
t2.id >= table.id
AND t2.insertdate IS NOT NULL
)
残念ながら、このような更新はサーバーの昼食を食べています... 1 時間で 250 万レコードを数えます。
これをより効率的に行う方法についてのアイデアはありますか?
一度だけ実行する必要がありますが、これは運用サーバーであるため、テーブルを必要以上にロックアップしないことをお勧めします。