在SQL2k降序索引上使用中bug

解决SQL2k降序索引上使用对比条件更新或删除的bug我在SQL server 2000 enterprise 和 personal 都试过了, 每次都这样。:(
详细情况看我的回贴:

SQl server 7.0 中的确没有问题,  sql 2000 中(enterprise 和 personal版本都可以),
 
   
   
   
 
 
   
   
     
       
         
       
     
     
   
 
 
   
   
   
 


表要有聚簇索引,并且索引的顺序是降序,

例如 按下列DDL sql 建立的表
CREATE TABLE [AType] (
    [AID] [int] NOT NULL ,
    [name] [varchar(20)] NOT NULL ,
    CONSTRAINT [PK_DateType] PRIMARY KEY  CLUSTERED
    ([AID] DESC)  ON [PRIMARY] ,
) ON [PRIMARY]

添一些数据后, AID 分别分布在1-100之间
INSERT INTO [AType] VALUES(1,'a')
INSERT INTO [AType] VALUES(50,'b')
INSERT INTO [AType] VALUES(100,'c')

  select from atype where Aid < 50
  go
  delete from Atype where AID < 50
  go
  select from atype where Aid < 50
最后一句查询仍然有记录输出. :(


by 怡红公子
报告已经发送给MSSQL开发小组,他们承认这一错误。
在没有新的补丁出来之前,给出以下建议:
不要在单列上使用降序索引,因为这并没有在性能上带来好处,仅仅是省略了Order by field desc几个字而已,用qa的show plan看一下就知道了,不管有没有order by或者不管是asc还是desc,都没有这项开销的(在聚簇索引上)。
降序索引一般是用于复合索引的,这可能是这个bug出现的原因。
原文:
Note that there is no need to create a descending index on a single column because SQL Server can traverse
an ascending index backwards when appropriate.  Descending is normally used only in composite indexes. 
This is probably why the bug surfaces here

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [SQL Server] 的这些文章也感兴趣:

使用SQL Server 2000索引视图提高性能
SQL Server2000不允许进行远程连接
SQL Server 2005安全性
选择具有高可用性的数据库: SQL Server与Oracle对比分析 3
SQL Server 2005数据库开发概述(1)
选择MySQL还是SQL Server
SQLServer悲观锁定和乐观锁定应用实例
针对SQL INJECTION的SQL SERVER安全设置初级篇
SQL Server 7.0 的数据迁移到MySQL上的一种方法
专家谈SQL Server 2005的CLR