【发布时间】:2011-01-18 02:14:22
【问题描述】:
我有一个包含几个非 PK 相关索引的表。不幸的是,存在一些重复性,因为多个索引以相同的排序顺序引用同一列。我通常会为我的表创建代表非 PK 相关索引聚合的覆盖索引,因为只要该列被索引,它就会在查询期间适当地使用它。我的问题很简单:是否以相同的排序顺序在多个索引中索引同一列会浪费资源,还是 SQL Server 知道某个列已被索引并且只是为了优化目的而交叉引用?
更新: 未来的一点是询问具有轻微变化的重复索引是否会改善 ORDER BY 活动。例如,如果我按 A、B DESC、D 排序,那么具有该顺序的特殊索引实际上会比包含具有相同排序顺序的这些列的单个覆盖索引提高性能。我的印象是 ORDER BY 只会依赖索引,并且出于性能原因不需要存在特殊索引。
【问题讨论】:
-
请注意:具有特定顺序的复合索引确实会提高围绕该顺序构建的查询的性能。创建覆盖索引将通过使用索引扫描与索引搜索的权衡来简化事情......这要快得多。 ORDER BY 将利用索引(如果存在)。