【问题标题】:Descending sort order indexes降序排序索引
【发布时间】:2010-10-27 00:40:20
【问题描述】:

Database Engine Tuning Advisor 终于放弃了幽灵,帮不了我了,所以我不得不多学习一点关于索引的知识(不应该是索引吗?)。

我想我或多或少在那里。我知道什么时候使用复合索引,我的索引中包含什么,聚集索引和非聚集索引的区别等等。

但是...有一件事仍然让我感到困惑。创建索引时,索引有一个排序顺序。我理解这意味着什么,但我很难想到逆序索引可能有用的场景。我最好的猜测是加快检索出现在前向排序索引末尾的行的查询,例如按时间顺序排列的最近的行,但坦率地说,我或多或少一无所知。

谁能赐教?

【问题讨论】:

标签: sql sql-server indexing performance


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    索引的排序顺序仅对多列索引很重要。对于单列,Sql Sever 可以逆序使用索引,如果它想要索引为 ASC 的 DESC。

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

    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
    

    【讨论】:

      【解决方案3】:

      定义正确的排序顺序可以可能在您在选择语句。

      Msdn article

      【讨论】:

        【解决方案4】:

        最新数据通常存在偏差,因此如果您按“日期降序”排序,则可以针对此用例进行优化。

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

        【讨论】:

          【解决方案5】:

          这是索引排序顺序的 BOL:

          http://msdn.microsoft.com/en-us/library/ms181154.aspx

          应该可以帮助您更多地了解内部工作原理以及语法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-03
            • 1970-01-01
            • 2014-10-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多