我需要将 datetime 列回填到现有的具有十亿条记录的 sql server 表 (A) 中。我在主键(ID)上将目标表(A)与父表(B)内部连接,然后检索日期。不幸的是,我在日期列上没有索引,这导致更新非常慢。我无法在 Date 列(包含 ID)上创建索引,因为在线索引创建占用了整个 tlog(最大 150gb)并且离线索引构建超出了范围。
UPDATE A
SET A.DATE = ZZ.DATE
FROM A
INNER JOIN
(SELECT TOP 100000 A.ID,
B.DATE
FROM A WITH (NOLOCK)
INNER JOIN
B WITH (NOLOCK)
-- parent table
ON A.ID = B.ID
WHERE A.DATE IS NULL) AS ZZ
ON ZZ.ID = A.ID;
任何专家建议以更快或更有效的方式执行回填。
谢谢