2009-05-18 116 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

很多時候,有一個爲最新的數據偏差,因此,如果您是按「日期倒序排列」,您優化這種使用情況。

我想對於數字而不是字母的東西會更有意義。