Microsoft SQL Server 查询处理器的内部机制与结构
2006-08-05 09:14:50 来源:WEB开发网如果您不想取回这个数据流水,则可以始终使用块游标或可滚动游标。在这种情况下,数据流变得大不相同。调用是对通过 SQL 文本中的 sp_cursoropen 输入点(这些虚拟存储过程之一)进行的。该 sp_cursoropen 利用 SQL 来增加附加逻辑,以使其滚动,它潜在地将某些结果重定向到一个临时表,然后用句柄给游标一个响应,表明游标现在是打开的。仍然在程序员的控制之外,客户机调用 sp_cursorfetch,将一行或多行转到客户机上,然后返回到用户应用程序。客户机还可使用 sp_cursor 来重新配置游标,或改变某些统计数字。在您处理完游标之后,客户机将调用 sp_cursorclose。
让我们看一个简单的情况,即只返回一行给客户机。至于默认的结果集,需要从客户机到服务器往返发送一次消息。SQL 消息(或 sp_executesql)向下发往服务器,然后结果返回来。在同一行(非流水)的游标情况下,您会看到传统情况下能用 SQL Server 看见的东西。一个往返行程用于打开,一个往返行程用于取得数据,一个往返行程用于关闭。这个过程使用消息的次数是默认结果集使用的三倍。在 SQL Server 7.0 中,有一种所谓只向前的快速游标, 它使用同样的游标结构。它与流水的表现不一样,因为在发送任何附加 SQL 消息之前,它不需要您处理全部结果行。所以,如果您带回 5 行,还有更多的数据,您仍能将更新向下发送给服务器。
一个只向前的快速游标在服务器上比常规游标更快,它让您指定两个附加选项。一个称为自动取数,另一个称为自动关闭。自动取数将返回第一个行集合,作为打开的响应消息的一部分。自动关闭在读完最后一行后自动关闭游标。因为它是只向前的和只读的,所以不能回滚。SQL Server 只传回一个带有说明游标已关闭的最后数据集的消息。如果您正在使用只向前的快速游标,则在行数少的消息里,您可向下与同一往返行程通信。如果您有很多行,则您至少还要对每一行块支付附加开销。如果您使用只向前的快速游标,那么游标处理会更加接近默认的结果集。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
赞助商链接