【问题标题】:Does a database index work in reverse?数据库索引是否反向工作?
【发布时间】:2011-08-31 23:07:54
【问题描述】:

给定一个数据库表示例:

ID
Name
DateOfBirth

假设我想创建一个出生日期的索引,我可能会在DateOfBirth ascending 上添加索引。如果我的代码现在查询 DOB 升序,它将运行得又快又好。

但是,数据库是否足够智能以反向使用索引,即,如果我查询 orderby DateOfBirth descending,它是否仍然能够使用该索引,或者我应该专门为降序创建另一个索引?

【问题讨论】:

    标签: database sql-server-2008 indexing


    【解决方案1】:

    索引页面形成一个双向链表,如下所示,带有指向下一页和上一页的指针。

    因此,SQL Server 可以前后遍历索引。扫描方向is shown in the properties of the execution plan

    Asc/Desc 变得重要的地方在于复合索引。

    如果索引被定义为ID ASC, Name ASC, DateOfBirth ASC,这仍然需要对查询ORDER BY ID ASC, Name DESC, DateOfBirth ASC 进行排序。

    请注意,您可能拥有比您意识到的更多的复合索引以及非唯一非聚集索引will have the clustered index key value added to its key

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2016-10-04
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      相关资源
      最近更新 更多