教你快速掌握如何来创建升序和降序索引

来源:岁月联盟 编辑:zhuzhu 时间:2007-10-24

定义索引时,可以指定每列的数据是按升序还是降序存储。如果不指定,则默认为升序,保持与 Microsoft® SQL Server™ 2000 早期版本兼容。

 

CREATE TABLE、CREATE INDEX 和 ALTER TABLE 语句的语法在索引中的各列上支持关键字 ASC(升序)和 DESC(降序):

 

CREATE TABLE ObjTable    (ObjID      int PRIMARY KEY,    ObjName      char(10),    ObjWeight   decimal(9,3)    )CREATE NONCLUSTERED INDEX DescIdx ON         ObjTable(ObjName ASC, ObjWeight DESC)

INDEXKEY_PROPERTY 元数据函数报告索引列是按升序还是降序存储。另外,sp_helpindex 和 sp_helpconstraint 系统存储过程报告索引键列的方向。降序索引列将在结果集中列出,在其名称后带有减号 (-)。默认值(升序索引列)将仅按名称列出。

 

在大多数引用表的查询包含指定不同键列存储方向的 ORDER BY 子句时,指定键值存储顺序的能力非常有用。例如,先前为 ObjTable 定义的索引可以完全消除对 ORDER BY 子句的需要,如:

 

ORDER BY ObjName ASC, ObjWeight DESC

SQL Server 的内部算法在单列索引的两个不同方向上的效果是等同的,与键的存储顺序无关。例如,在单列索引上指定 DESC 并不能使带有 ORDER BY IndexKeyCol DESC 子句的查询比为索引指定了 ASC 的情况运行得更快。