Sql Server索引是否包含主键?

Gru*_*mle 16 sql-server indexing primary-key clustered-index sql-server-2008

我的一个合作伙伴的印象是,在SQL Server 2008中向表中添加索引时,PK的索引也会添加到该索引中.因此,如果您使用更宽的主键,那么该键也将包含在新索引中,大大增加了上面使用的磁盘空间,超出了已经为PK索引支付的惩罚.我之前没有听说过,到目前为止我的搜索结果是空的.

希望有人在这里指出相关文档,以确认或否认这一点.请?

Mar*_*ith 28

您的同事正在将"主键"与"聚簇索引键"混淆(可能是因为默认情况下,在堆上创建的PK而不指定nonclustered关键字将成为表的聚簇索引).

真正的是与一个聚集索引的表聚集索引键的值将作为包括列(县)的所有非聚集索引作为行定位器被自动加入.(尽管如果列已经是非聚集索引定义的一部分,则不会两次添加列).

理想的聚簇索引键是

  • unique(要充当行定位器,它必须是唯一的 - 如果不是,SQL Server将添加一个uniquifier)
  • 狭窄(因为它在所有非聚集索引中重现)
  • static(避免在多个不同的地方更新值)
  • 不断增加