首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在临时表上创建一个游标-安全吗?

问在临时表上创建一个游标-安全吗?
EN

Stack Overflow用户
提问于 2014-03-06 19:24:18
回答 1查看 7K关注 0票数 1

我知道在SQL中创建和使用游标既不安全也不高效,但有时这是唯一的选择。现在这是我唯一的选择。

我的问题不是如何避免使用游标,而是如果游标仅在存储过程中动态创建的临时表上操作,那么安全性和性能问题将如何。我知道游标的运行速度比set操作慢,并且对正在迭代的表设置一个锁。我的临时表是一个相对较小的表,只包含一个int和最多50个记录类型的字段。

代码语言:javascript
复制
DECLARE @pD int

DECLARE CurDB CURSOR FOR            
SELECT pD FROM #mD
open CurDB
fetch next from CurDB into @pD
etc...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-06 19:45:21

是的,这是安全的!而且不!游标通常不会对正在迭代的表设置锁。此外,为了获得更好的性能,大多数情况下,您可以使用FAST_FORWARD声明游标(如果没有更新表,则需要迭代)。

您可以看到有关声明游标的文档

此外,99.9%的时间您可以用关系逻辑编写一个很好的查询,以完成游标可以完成的同样工作,但通常速度更快,内存也更少。

事实上,游标不仅笨手笨脚,而且在使用内存方面表现不佳,临时表也会消耗内存(或者tempdb,可能两者兼而有之)。

性能不仅与时间和CPU周期有关,还与资源有关!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22234029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档