【问题标题】:Cursor verus while loop - what are the advantages/disadvantages of cursors?游标与 while 循环 - 游标的优点/缺点是什么?
【发布时间】:2008-09-26 14:23:07
【问题描述】:

使用 while 循环代替游标是个好主意吗?

游标的优缺点是什么?

【问题讨论】:

  • 你的意思是客户端代码中有一个while循环吗?你能举个例子吗?
  • 我同意 Kev 的观点,您能否详细说明您要完成的工作?
  • 我认为问题作者的意思是您可以通过将要循环的项目放入临时表来模拟循环。然后,您可以使用 WHILE Count(1) 0 循环“循环”这些项目。在每个循环中,您处理一个项目并将其从临时表中删除。因此,就性能和其他优缺点而言,WHERE 循环与 CURSOR 是一个很好的问题。

标签: sql-server database-cursor


【解决方案1】:

我正在听从这条建议:

[...] 哪个更好:游标或 WHILE 循环?再次,这真的取决于 根据你的情况。我几乎总是使用 一个游标来遍历记录时 必要的。游标格式是 对我来说更直观一些, 因为我只是使用构造来 遍历结果集一次,它 使用 FAST_FORWARD 是有意义的 光标。请记住,类型 你使用的光标会产生巨大的影响 关于你的循环性能 构造。

Comparing cursor vs. WHILE loop performance in SQL Server 2008 中的 Tim Chapman@

链接的文章包含如何实施每种方法的简单示例。

【讨论】:

【解决方案2】:

其中一些取决于 DBMS,但通常:

优点:

  • 在逐行处理方面优于循环

  • 适用于大型数据集

缺点:

  • 不要扩展

  • 使用更多服务器资源

  • 增加 tempdb 的负载

  • 如果使用不当可能会导致泄漏(例如,打开而没有相应的关闭)

【讨论】:

    【解决方案3】:

    我会问你,你在用那个光标/while 循环做什么。

    如果您要更新或返回数据,为什么不使用适当的 WHERE 子句。我知道有人会说你永远不应该使用光标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 2023-03-10
      • 2022-01-18
      • 1970-01-01
      • 2011-01-03
      相关资源
      最近更新 更多