cursor threshold 选项
使用 cursor threshold 选项可以指定游标集中的行数,超过此行数,将异步生成游标键集。游标为某个结果集生成键集时,查询优化器将估计为该结果集返回的行数。如果查询优化器估计返回的行数大于此阈值,则将异步生成游标,使用户在继续填充游标时仍然可以从游标中提取行。否则,将同步生成游标,查询将等待返回所有行。
如果将 cursor threshold 设置为 -1,则所有游标键集将同步生成,这对于小游标集很有用。如果将 cursor threshold 设置为 0,则所有游标键集将异步生成。如果 cursor threshold 为其他值,则查询优化器将比较该值与游标集中的所需行数,如果后者大于前者,则将异步生成键集。不要将 cursor threshold 的值设置得过低,因为最好以同步方式创建小结果集。
注意: |
---|
SQL Server 2005 不支持异步生成键集驱动游标或静态 Transact-SQL 游标。Transact-SQL 游标操作(例如 OPEN 或 FETCH)将被批处理,因此不必异步生成 Transact-SQL 游标。由于客户端对每个游标操作都需往返一次,因此 SQL Server 2005 将继续支持异步键集驱动游标或静态应用程序编程接口 (API) 服务器游标,而在这种情况下低滞后时间的 OPEN 是个问题。 |
查询优化器估计键集中行数的准确性取决于游标中每个表统计信息的当前值。
cursor threshold 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 cursor threshold。更改后的设置将立即生效,而不需要重新启动服务器。
请参阅
概念
其他资源
RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)