您何时定义具有降序的索引?

时间:2010-03-03 11:49:58

标签: database-design indexing

通过一些SQL实现,我注意到大多数DBMS支持在具有解除顺序的列上定义索引,例如

CREATE INDEX anIndex ON aTable (aColumn DESC);

什么时候比ASC指数有利?为什么ASC或DESC是索引定义的一部分?

如果索引的实现是有效的(B树或甚至是排序列表中的二进制搜索),我看不到ASC或DESC索引之间的任何重大差异。

我错过了什么?

2 个答案:

答案 0 :(得分:3)

如果表是聚类的,那么索引实际上就是这样:

acolumn DESC, id ASC

可以在

等查询中使用
SELECT  TOP 1 *
FROM    mytable
ORDER BY
        acolumn DESC, id ASC

SELECT  TOP 1 *
FROM    mytable
ORDER BY
        acolumn ASC, id DESC

,但不在

SELECT  TOP 1 *
FROM    mytable
ORDER BY
        acolumn DESC, id DESC

对于复合索引,列也可以按相反方向排序:

CREATE INDEX anIndex ON aTable (aColumn DESC, bColumn ASC);

答案 1 :(得分:1)

  1. 当您认为用户需要以相反的顺序查看数据时。有时索引可用于优化ORDER BY。

  2. 当您尝试使用物理存储进行棘手的游戏时,可以将具有某些属性的行聚集在一起。