我重新创建了查询:
MERGE [Unshipped] u
USING [Order] order or ON or.ID = u.ID
WHEN MATCHED AND u.Date <> or.Date
THEN
UPDATE
SET u.Date = or.Date
WHEN NOT MATCHED
THEN
INSERT (ID, FK, Date)
VALUES (or.ID, or.FK, or.Date)
表2
在我的现实生活中,这似乎是死锁。 ID列上有一个聚集索引。
我的研究使我陷入了两个问题:
MERGE的MATCH部分检查索引是否匹配,并不断读取并锁定这些行/页面。
当一行中没有匹配项时,它将尝试首先插入新的索引行,因此它将请求对行/页进行写锁定...
此查询是否属于这种情况?谁能进一步建议我?阻止这种僵局的最佳方法是什么?任何信息都很棒。