以升序和降序选择数据时所需的指数

时间:2011-03-02 22:03:38

标签: sql-server-2005 indexing

我们有一个表格表格,我们希望以加入顺序和降序顺序选择数据。

我们需要创建2个指数吗?

如果只有一个加入的聚簇索引,SQL Server如何按递减顺序处理所有行的请求?

1 个答案:

答案 0 :(得分:1)

简答:否。如果这仅适用于一列,则在两种情况下都应使用相同的索引。至于遍历,由于索引是双向链表,因此可以按任意顺序遍历它们。

http://msdn.microsoft.com/en-us/library/aa933132%28SQL.80%29.aspx

其他细节......

如果你在emp_name上有一个(比如......升序)索引,那么下面的两个查询都应该能够使用它而无需进行附加排序。

select x,y,z,a,b,c,emp_name from <table_name> 
order by emp_name desc;

select x,y,z,a,b,c,emp_name from <table_name> 
order by emp_name asc;

问题是当查询引用多个列时,这两个列的顺序顺序不同。

select x,y,z,a,b,c,emp_name from <tabble_name
order by emp_name asc, a desc.

在这种情况下,如果在创建索引时使用desc子句,则可以避免其他类型。

检查此链接。它对Oracle很有用,但我相信SQL Server的工作方式大致相同。

http://forums.oracle.com/forums/thread.jspa?messageID=4061884

另一个有用的链接:

http://www.mssqltips.com/tip.asp?tip=1337