教你快速掌握如何来创建升序和降序索引
来源:岁月联盟
时间: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 的情况运行得更快。