解决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
在SQL2k降序索引上使用中bug
时间: 2024-09-10 07:08:09
在SQL2k降序索引上使用中bug的相关文章
关于Oracle降序索引的定意及回溯
oracle|索引 降序索引本质上是FBI,其具体定义可以通过 user_ind_expressions 或dba_ind_expressions 查询.那么同样的,降序索引只有在CBO下才能被使用. Connected to Oracle9i Enterprise Edition Release 9.2.0.4.0 Connected as eygle SQL> create table t as select * from dba_users; Table created SQL> cre
mysql降序索引和减轻索引扫描
Descending indexing and loose index scan 降序索引和减轻索引扫描 Comments to my previous posts, especially this one by Gokhan inspired me to write a bit about descending indexes and about loose index scan, or what Gokhan calls "better range" support. None o
[20140512]关于降序索引.txt
[20140512]关于降序索引.txt https://jonathanlewis.wordpress.com/2014/05/07/quiz-night-23/ 提到建立降序索引,会出现建立唯一索引出现促错误的问题,自己做一个测试了解一些细节: 1.测试环境: SCOTT@test> @ver BANNER -------------------------------------------------------------------------------- Oracle Datab
c语言-C填空题:键盘上输入10个整数,程序按降序完成从大到小排序
问题描述 C填空题:键盘上输入10个整数,程序按降序完成从大到小排序 #include void sort(int *p,int *q) { int *max,*s; if(p>q)return; max=p; __ for(s=p+1;s<=q;s++)__ if()max=s; swap(); sort((),q); } void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; } void main() { int i,a
ORA FAQ 性能调整系列之——当索引第一列由序列产生,一个逆序索引有什么用?
索引|性能 ORA FAQ 性能调整系列之--The Oracle (tm) Users' Co-Operative FAQWhy would a reverse index be useful when the leading column of the index is generated from a sequence ?当索引第一列由序列产生,一个逆序索引有什么用?--------------------------------------------------------------
PHP中数组元素升序、降序及重新排序的函数
在PHP数组学习摘录部分了解到最基本的PHP数组的建立和数组元素的显示.需要深入学习下PHP数组的相关操作.首先接触的就是数组元素的升序.降序的排序问题. 1,快速创建数组的函数range() 比如range()函数可以快速创建从1到9的数字数组: <?php $numbers=range(1,9);echo $numbers[1];?> 当然,使用range(9,1)则创建了9到1的数字数组.同时,range()还可以创建从a到z 的字符数组: <?php $numbers=range
DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)
access|datagrid|分页|语句 DataGrid连接Access的快速分页法(3)--SQL语句的选用(降序)三.降序(1)@PageIndex <= @FirstIndexSELECT TOP @PageSize @QueryFields FROM @TableName WHERE @ConditionORDER BY @PrimaryKey DESC (2)@FirstIndex < @PageIndex <= @MiddleIndex SELECT TOP @PageS
sql server 2008-如何修改数据库默认排序为降序
问题描述 如何修改数据库默认排序为降序 请教一个问题 以前做的一个东西 查询数据没用order by : 查询出来的数据是按主键 升序排的 现在想改成 按另外一个字段降序排 由于丢失源码 能在数据库里修改吗 尝试新建 视图 索引 均无效 SQLSERVER 2008 解决方案 在管理器中选中数据库,右键-->属性-->选项,右边第一个就是排序规则 解决方案二: http://m.blog.csdn.net/blog/lichxi1002/19611227 解决方案三: 楼上的兄弟 你说的这个我
linq关于动态升序或降序进行排序,3个字段都要
问题描述 有3个字段要排序,但是升序或降序有参数决定本来以为可以如下if(第一个参数是升序)query=query.orderby("a")elsequery=query.OrderByDescending("a")endifif(第二个参数是升序)query=query.orderby("b")elsequery=query.OrderByDescending("b")endifif(第三个参数是升序)query=query