如果可能的话,尽量避免使用游标。SQL Server是基于集合的,任何需要按行进行处理的操作都会变得缓慢、迟钝,并且违反SQL工作的基本原则。您的问题非常模糊 - 基于那些信息,我们无法真正了解您想要做什么。但主要建议仍然是:尽可能地使用基于集合的操作 - SELECT、UPDATE、INSERT和JOIN - 不要将过程式思维强加于SQL Server上 - 那不是最好的方法。因此,如果您可以使用基于集合的操作来填充和使用临时表,我会更喜欢这种方法而不是使用游标。
游标以逐行方式工作且性能极差。在几乎所有情况下,它们都可以用更好的基于集合的代码来替换(通常不使用临时表)。临时表可以是好的或者坏的,这取决于数据量和您对其进行的操作。它们通常不能替代游标。建议阅读此文档: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them
我相信 SARAVAN 最初将游标和临时表进行比较,是因为很多时候你会面临这样一种情况:使用带有标识列和 @counter 变量的临时表可以像游标一样滚动/浏览数据集。 根据我的经验,使用临时表(或表变量)方案可以帮助我在95%的情况下完成工作,并且比通常缓慢的游标更快。