问题描述
|
给定一个数据库表示例:
ID
Name
DateOfBirth
假设我想在出生日期创建一个索引,可以将索引添加到DateOfBirth ascending
上。如果现在我的代码以dob升序查询,它将运行良好且快速。
但是,数据库是否足够智能,可以反向使用索引,即如果我查询“ 2”,它是否仍然可以利用该索引,还是我应该专门为降序创建另一个索引?
解决方法
索引页面形成一个双向链接列表,如下所示,并带有指向下一页和上一页的指针。
因此,SQL Server可以向后和向前遍历索引。扫描方向显示在执行计划的属性中。
在复合索引中,
Asc
/Desc
变得重要的地方。
如果将索引定义为“ 5”,则对于查询“ 6”仍然需要排序。
请注意,您可能拥有比您意识到的更多的复合索引,并且非唯一的非聚簇索引会将聚簇索引键值添加到其键中。