如何在T-SQL中最小化表的辅助扫描描述符的数量?

时间:2008-11-07 01:58:09

标签: tsql indexing types sybase

我最近看到遗留系统上的存储过程偶尔出现问题,显示如下错误消息:

  

服务器消息:编号10901,严重级17:   此查询需要 X 辅助扫描   描述符,但目前有   仅 Y 辅助扫描描述符   可用。要么提高价值   '辅助扫描描述符的数量'   配置参数或试试你的   稍后查询。

其中 X 略低于 Y 。 Sybase手册有用地告诉我,我应该重新设计我的表以使用更少的辅助扫描描述符(如何?!),或增加系统上可用的数量。奇怪的是,它已经运行了好几年,唯一改变的是我们修改了几列的数据类型并添加了一个索引。任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:2)

您没有说出您所使用的Sybase版本,但以下内容适用于ASE 12.5以上版本。

我怀疑这是新索引的添加,它抛弃了该存储过程的查询计划。你试过跑吗

update statistics *table_name*
对吗?如果失败,您可以通过运行

找出您拥有的扫描描述符数量
sp_monitorconfig "aux scan descriptors"

然后通过运行

来增加它
sp_configure "aux scan descriptors", x

其中x是您需要的扫描描述符数。

如果您希望减少商店程序正在使用的扫描描述符数量,那么根据here您必须

重写查询,或使用临时表将其分解为多个步骤。对于仅数据锁定表,如果有许多表扫描,请考虑添加索引。

但如果没有查看查询计划,则无法提供更具体的建议。

答案 1 :(得分:1)

这是提交CR的Sybase 12.5.2中的缺陷,请参阅this list中的问题361967。它被修补为12.5.3及以上版本。