我们有一个表格表格,我们希望以加入顺序和降序顺序选择数据。
我们需要创建2个指数吗?
如果只有一个加入的聚簇索引,SQL Server如何按递减顺序处理所有行的请求?
答案 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
另一个有用的链接: