给出一个数据库表示例:
ID
Name
DateOfBirth
假设我想在出生日期创建索引,我可以在DateOfBirth ascending
上添加索引。如果我的代码现在在DOB升序上查询,它将运行良好且快速。
但是,数据库是否足够智能以反向使用索引,即,如果我查询orderby DateOfBirth descending
它仍然能够利用该索引,还是应该创建另一个专门用于降序排序?
答案 0 :(得分:6)
索引页面形成一个双向链表,如下所示,指向下一页和上一页。
因此,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。