通过一些SQL实现,我注意到大多数DBMS支持在具有解除顺序的列上定义索引,例如
CREATE INDEX anIndex ON aTable (aColumn DESC);
什么时候比ASC指数有利?为什么ASC或DESC是索引定义的一部分?
如果索引的实现是有效的(B树或甚至是排序列表中的二进制搜索),我看不到ASC或DESC索引之间的任何重大差异。
我错过了什么?
答案 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)
当您认为用户需要以相反的顺序查看数据时。有时索引可用于优化ORDER BY。
当您尝试使用物理存储进行棘手的游戏时,可以将具有某些属性的行聚集在一起。