1
13
是的,你已经很明白了。 当您有一个聚集索引时,任何非聚集索引也将包含来自聚集索引的列作为它们在实际数据中的“查找”。 如果在非聚集索引中搜索值,并且需要访问基础数据的其余列,则SQL Server将从该非聚集索引中执行“书签查找”(或“键查找”),以将其放入聚集索引(叶级节点中包含数据本身)中。对于聚集索引,您不再需要RID,因此,如果RID发生更改(当数据从一个页面移动到另一个页面时),您不必更新所有索引页面。
书签查找是相当昂贵的操作,因此可以通过
|
2
1
不,不是每个查询都使用聚集索引。如果查询被非聚集索引“覆盖”(查询所需的所有列都包含在NC索引中),则SQL Server将只需要读取这些索引页,而不需要执行书签查找。事实上,优化器通常会尽可能使用覆盖的NC索引,因为NC索引通常小于聚集索引,因此扫描速度通常更快。 |
3
1
不。 如果查询只使用辅助索引和/或聚集索引所覆盖的字段,则可能(而且很可能)首选辅助索引。
上面的查询很可能会使用
是的,稍加修改:
|