2009-05-18 110 views
6

数据库引擎优化顾问终于放弃了幽灵并且无法再帮助我,所以我不得不多学习一些关于索引的知识(它不应该是索引?)。降序排序顺序索引

我想我或多或少都在那里。我知道何时使用组合索引,包括我的索引,聚簇索引和非聚簇索引之间的区别等。

但是......有一件事仍令我困惑。创建索引时,索引有一个排序顺序。我明白这意味着什么,但是我正在努力想到一个倒序索引可能有用的场景。我最好的猜测是加速查询,以检索在正向排序索引末尾发生的行,例如最近按时间顺序排列的最近行,但坦率地说,我或多或少都无能为力。

任何人都可以启发我吗?

+0

可能重复的[SQL Server索引 - 升序或降序,它有什么区别吗?](http://stackoverflow.com/questions/743858/sql-server-indexes-ascending-or-descending-what-difference -does-IT-MAKE) – 2014-01-28 22:29:46

回答

9

索引的排序顺序仅适用于多列索引。对于单列,Sql Sever可以按相反顺序使用索引,如果它希望DESC索引为ASC。

对于多列搜索,索引排序确实很重要。假设你有一个索引:

field1, field2 desc 

这将是这个查询有用:

select field1, field2 from table order by field1, field2 desc 

而对于此查询,其中索引可以反向使用:

select field1, field2 from table order by field1 desc, field2 

但对于此查询,Sql Server需要额外的内存中排序:

select field1, field2 from table order by field1, field2 
0

您在为降序排序的查询设计索引时,对索引进行降序排序。

1

确定正确的排序顺序可潜在消除对查询计划排序步骤的需要,当你通过在SELECT语句定义顺序。

Msdn article

0

很多时候,有一个为最新的数据偏差,因此,如果您是按“日期倒序排列”,您优化这种使用情况。

我想对于数字而不是字母的东西会更有意义。