我们有一个过程可以看到一些一致的查询内并行性 desdlocks 涉及以下 AD-HOC。我发现了几个可用的解决方法:
UPDATE VPG
SET VPG.CountActual = COALESCE(PGI.CNT, 0)
FROM ValidProductGroups AS VPG
LEFT JOIN
(SELECT ProductGroupID, COUNT(ProductGroupID) AS 'CNT'
FROM ProdGroupItems WITH(NOLOCK)
WHERE Deleted = 0
GROUP BY ProductGroupID) AS PGI ON PGI.ProductGroupID = VPG.ProductGroupID
WHERE VPG.LocationID = 5
我将非聚集索引添加到语句中的子查询中Update
。下一步将MAXDOP
查询提示添加到 AD-HOC,但我有点困惑我可以在更新语句中添加它的位置:
- 是不是在
Update
语句的最后 - 还是在
SELECT
子查询中的语句末尾?
请帮忙!