如何在 sql 中更新数据,避免 while 循环以获得更好的性能
How to update data in sql avoiding while loop for better performance
我在 while 循环(在存储过程中)中更新数据,这严重影响了性能。在更新 table.
时是否有任何替代(最佳)解决方案具有相对更好的性能
我已阅读有关 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;
UPDATE m
SET TopicId = t.TopicId
FROM @Modules m
JOIN @TopicsIds t ON m.Id = t.Id
为什么要使用循环更新,像
一样使用直接更新查询
update a set a.TopicId = b.TopicId
from @Modules as a
inner join @TopicsIds as b on a.id = b.id
我在 while 循环(在存储过程中)中更新数据,这严重影响了性能。在更新 table.
时是否有任何替代(最佳)解决方案具有相对更好的性能我已阅读有关 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;
UPDATE m
SET TopicId = t.TopicId
FROM @Modules m
JOIN @TopicsIds t ON m.Id = t.Id
为什么要使用循环更新,像
一样使用直接更新查询 update a set a.TopicId = b.TopicId
from @Modules as a
inner join @TopicsIds as b on a.id = b.id