Sql 游标和While循环的替代方法

Sql 游标和While循环的替代方法,sql,sql-server,tsql,Sql,Sql Server,Tsql,为了在SQL server中处理迭代,我们使用游标或While循环。在我们的应用程序中,这两种方法似乎都很昂贵任何其他能够在sql server中处理迭代的性能可行方法?如果可能,请避免使用sql server游标。它们通常会使用大量SQL Server资源,降低应用程序的性能和可伸缩性。如果需要执行逐行操作,请尝试找到其他方法来执行该任务 以下是使用光标的一些替代方法: 在循环时使用 使用临时表 使用派生表 使用相关子查询 使用CASE语句 执行多个查询 通常情况下,有一些非游标技术可以用

为了在SQL server中处理迭代,我们使用
游标
While
循环。在我们的应用程序中,这两种方法似乎都很昂贵
任何其他能够在sql server中处理迭代的性能可行方法?

如果可能,请避免使用sql server游标。它们通常会使用大量SQL Server资源,降低应用程序的性能和可伸缩性。如果需要执行逐行操作,请尝试找到其他方法来执行该任务

以下是使用光标的一些替代方法:

  • 在循环时使用
  • 使用临时表
  • 使用派生表
  • 使用相关子查询
  • 使用
    CASE
    语句
  • 执行多个查询

通常情况下,有一些非游标技术可以用来执行相同的

是的,在85%的情况下,您可以使用基于集合的解决方案。使用循环是来自不同语言的坏习惯,它迫使您以基于行的方式思考。显示您的代码,我们将尝试找到基于集合的解决方案;)通常,在SQL中,您应该支持基于集合的操作。所以“如何最好地进行迭代?”的答案通常是“不要”。另请参见将一周的数据复制到多周的情况。我使用while循环迭代需要复制数据的周数。我只知道两种执行迭代游标和while循环的标准方法。我更喜欢这里。如果有任何sql server技术,我们将不胜感激job@bmsqldev-这通常是通过将源表与数字表(没有更多信息,目前无法提供更具体的解决方案)连接来处理的,
while循环与游标有何不同?您仍然逐行处理数据。在
中,当
循环时,不必在内存中创建任何对象,以便于使用游标在一组记录中循环。但是游标将占用更多资源,既然每次迭代都会扫描整个表行,不是吗?那么
while
循环实际上是如何循环查询行的呢?它如何检索循环中处理的行?它肯定会在背景中使用光标(尽管是隐式的)。或者它是凭空获取数据的吗?我还没有研究过。但一般来说,出于性能考虑,while循环优于游标