MS SQL - Col1 和 Col1+2 上两个非聚集索引的优缺点

问题描述 投票:0回答:0

关于类似问题,请考虑以下事项:

微软SQL 表“T”至少有 3 列 - A、B、C 和 D。 A 上的 PK(即非空、唯一和聚集索引), B、C 上的非聚集索引 #1 B

上的非聚集索引 #2

在我礼貌地辩称索引 #2 是多余的/可以删除后,DBA 通知我需要两个索引,因为索引 #1 足以通过 (B) 或 (B+C) 访问表。 IIRC,DBA 提到分页是他保留两者的理由。 问题#1:DBA 正确吗?

Q#2:无论想要保留这两个索引,拥有 2 个 NC 索引有什么优点/缺点?

我确实了解集群(CI)/非集群(NCI)的主要区别。

特别是:

聚集索引定义了数据在叶节点上组织的物理顺序。
  • 根据设计,CI 包含所有列。
  • 在NCI中,叶节点包含指向相应聚集索引键的指针。如果不存在聚集索引,则它们包含物理 HEAP 表的 RID(行标识符)。
  • 非聚集唯一索引包含 RID 作为 INCLUDED 列,而非聚集非唯一索引包含聚集索引作为键查找列。
  • 当 NCI 没有查询所需的所有列(例如:per select、where 等)时,非聚集索引的读取将引用物理表数据。
  • 谢谢。

sql clustered-index non-clustered-index microsoft-data-sqlclient
© www.soinside.com 2019 - 2024. All rights reserved.