我正在while循环中(在存储过程中)更新数据,这严重破坏了性能。在更新表格时,是否有其他替代(最佳)解决方案,它们的性能相对更好。
我已经了解过CTE,但无法解决当前的问题
WHILE (@Counter <= (SELECT COUNT(id) FROM @TopicsIds))
BEGIN
SELECT @CurrentTopicId = TopicId
FROM @TopicsIds
WHERE id = @Counter;
UPDATE @Modules
SET TopicId = @CurrentTopicId
WHERE id = @Counter;
SET @Counter = @Counter + 1;
END;
答案 0 :(得分:0)
UPDATE m
SET TopicId = t.TopicId
FROM @Modules m
JOIN @TopicsIds t ON m.Id = t.Id
答案 1 :(得分:0)
为什么要使用循环进行更新,请使用直接更新查询,例如
update a set a.TopicId = b.TopicId
from @Modules as a
inner join @TopicsIds as b on a.id = b.id