使用 while 循环而不是游标是个好主意吗?
游标的优点/缺点是什么?
我正在遵循以下建议:
[...] 哪个更好:游标还是 WHILE 循环?同样,这真的取决于你的情况。我几乎总是在必要时使用游标来循环记录。游标格式对我来说更直观一些,因为我只使用这些结构来循环遍历结果集一次,所以使用 FAST_FORWARD 游标是有意义的。请记住,您使用的游标类型将对循环结构的性能产生巨大影响。
— Tim Chapman 在比较 SQL Server 2008 中的游标与 WHILE 循环性能
链接的文章包含如何实现每种方法的简单示例。
其中一些取决于 DBMS,但通常:
优点:
在逐行处理方面优于循环
适用于大型数据集
缺点:
也不要缩放
使用更多服务器资源
增加 tempdb 的负载
如果使用不当可能会导致泄漏(例如,打开而没有相应的关闭)
我会问你在用那个游标/while 循环做什么。
如果您要更新或返回数据,为什么不使用适当的 WHERE 子句。我知道有人会说你永远不应该使用游标。