当前位置: 首页 > 面试题库 >

SQL Server快进游标

孟高峰
2023-03-14
问题内容

一般认为,应尽可能避免在存储过程中使用游标(用基于集合的逻辑等代替)。如果您遇到需要迭代某些数据并且可以以只读方式进行操作的情况,那么快进(只读向前)游标的效率比while循环差多少?从我的调查来看,似乎光标选项通常更快,并且使用的读取次数和CPU时间更少。我没有做任何广泛的测试,但这是别人发现的吗?这种类型的游标(快进)是否会带来额外的开销或资源,而这些开销或资源可能是我不知道的昂贵资源。

所有关于不使用游标的讨论都是关于在基于html" target="_blank">集合的方法可用时避免使用游标,以及使用可更新的游标等。

谢谢


问题答案:

避免在SQL Server中使用游标的“最佳实践”可追溯到SQL Server 2000和更早版本。SQL
2005中的引擎重写解决了与游标问题有关的大多数问题,特别是引入了快进选项。游标不必比基于集合的游标差,它在Oracle PL /
SQL(LOOP)中得到了广泛而成功的使用。

您所指的“一般接受的” 有效的,但现在已经过时且不正确-
继续假设快进游标的行为与广告中所描述的相同并执行。基于SQL2005及更高版本进行一些测试和研究



 类似资料:
  • 问题内容: 假设我在数据库(本例中为SQLServer 2008)中有一堆行,可用于创建方程式。 我需要想出一种方法来评估此表中的方程式。 公式1:12 + 12 = 24 公式2:(12-2)/ 2 = 5 我无法想到一种无需遍历行即可获得这些结果的方法。我知道如何执行此操作的唯一方法是使用游标或通过使用临时表和while循环。有没有更好的方法可以做到这一点?如果不是一般的话,什么将执行更好的游

  • 问题内容: 我有一个大于1000万行的巨大表。我需要从中有效地获取5000个随机样本。我有一些限制因素,使我想要的总行数减少到9密耳。 我尝试通过NEWID()使用order,但是该查询将花费很长时间,因为它必须对所有行进行表扫描。 有没有更快的方法可以做到这一点? 问题答案: 如果您可以使用伪随机抽样并且您使用的是SQL Server 2005/2008,则请看一下TABLESAMPLE。例如,

  • node-sqlserver 是微软官方发布的 SQL Server 的 Node.js 的驱动程序。可允许 Windows 上运行的 Node.js 程序访问 SQL Server 和 Windows Azure SQL 数据库。 该项目托管在 Github 上。

  • sqlserver manager 是一个多功能sqlserver图形管理界面,支持自定义导入导出,自动扫描服务器,数据库。  

  • 主要内容:第1节. 查询数据,第2节. 对数据进行排序,第3节. 限制返回行数,第4节. 过滤数据,第5节. 连接表,第6节. 分组数据,第7节. 子查询,第8节. 集合运算符,第9节. 修改数据,第10节. 数据定义,第11节. SQL Server数据类型,第12节. 约束MS SQL Server是Microsoft开发的关系数据库管理系统(RDBMS)。 本产品专为存储其他应用程序所需的检索数据的基本功能而构建。 它可以在同一台计算机上运行,也可以在网络上运行。 本教程介绍了SQL Se

  • 我在Wamp上使用symfony2,它连接在SQL服务器DB上。 当我开始与项目 一切都很好,速度很慢,但我的网站在127.0上还可以。0.1:8000,Doctrine2连接到sql server数据库时没有问题。 我的问题:当我localhost/MyProject/web/app_php.php(意味着我使用wamp而不是server: run)。Symfony抛出一个异常: PDOExc0