gpt4 book ai didi

sql - MS SQL Server - 游标什么时候好?

转载 作者:行者123 更新时间:2023-12-01 18:34:36 24 4
gpt4 key购买 nike

很多时候,当我编写存储过程等时,我首先使用游标,后来发现我的过程存在一些性能问题。

我读到的每一篇文章都说游标很糟糕,会导致不必要的锁定等,性能测试也证明了这一点。

我的问题是你什么时候使用游标以及它们在什么情况下有用或好的?

如果没有用,为什么他们要为 SQL 制定如此糟糕的控制结构/类型?

最佳答案

通常情况下应该避免使用它们,但该功能的存在是有原因的,并且有时会使用它们。我想说,我见过的 90% 以上的光标都是不需要的。如果您将它们用于 CRUD 操作,那么几乎总是可以以基于集合的方式重做。我经常看到人们为此使用游标,因为他们不知道如何在更新或删除中使用联接,也不知道他们可以在插入中使用 select 语句而不是值子句。当人们认为他们需要它们进行稍微复杂的处理时,另一个不必要的用途实际上可以通过 case 语句轻松处理。

游标有时可以更快地计算诸如运行总计之类的内容。

游标对于多次执行存储过程也很方便,该存储过程被设置为一次仅处理一个输入值。我不使用此功能来运行用户存储过程(除非我知道我将访问非常小的数据集),但当需要针对多个表运行系统过程时,它对于数据库管理员来说非常方便。

如果您在 SQl 中创建电子邮件(不是最好的位置,但在某些系统中就是这样做的)并且不希望电子邮件的整个受众看到列表中的其他人,或者您想要要使用有关收件人的信息对每封电子邮件进行个性化设置,光标是最佳选择。

如果整个基于集合的插入/更新/删除将花费太长时间并锁定表,则游标或循环也可用于处理批量记录。这是游标和基于集的解决方案之间的一种混合体,通常是生产系统上发生较大变化的最佳解决方案。

关于sql - MS SQL Server - 游标什么时候好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com