【问题标题】:unclustered PrimaryKey and clustered index非聚集 PrimaryKey 和聚集索引
【发布时间】:2016-01-05 19:31:38
【问题描述】:

在我们的一个表中,UNIQUEIDENTIFIERcolumn 上有一个现有的非聚集主键,在 FK 中大量使用。

我们现在要添加一个IDENTITY 列并为此创建一个唯一的聚集索引。

我不需要解释集群与非集群或“什么是主键?”。

我想要

  1. 删除所有索引
  2. 使用IDENTITY 添加新列
  3. 在新列上创建唯一聚集索引
  4. 重新创建所有索引

我的问题是:

  1. 是否将新的聚集索引用作查找键?
  2. 主键会使用集群键吗?
  3. 并排使用集群密钥和非集群 PK 会产生什么影响?

谢谢!

【问题讨论】:

    标签: sql-server-2008-r2 primary-key clustered-index non-clustered-index


    【解决方案1】:
    1. 是否将新的聚集索引用作查找键?

    是的,聚集键将是查找键。

    1. 主键会使用集群键吗?

    是的,主键总是附加一个聚集索引。

    1. 并排使用集群密钥和非集群 PK 会产生什么影响?

    这取决于您的表格和相关列的使用情况。

    【讨论】:

    • 有没有可能,您错过了重点?我确实有一个我想保留的主键。聚集索引将是一个新索引...顺便说一句:PK 并不总是附加一个聚集索引。这只是默认行为。
    • @Shnugo:- 所以你的意思是你有一个主键,你正在其他列上创建唯一的聚集索引?
    • @Shnugo:- 好的,所以我的回答仍然有效,因为我认为聚集索引会影响记录在磁盘上的存储顺序。(我希望你的主键没有附加聚集索引,因为表上只能有 1 个聚集索引。)查找时将使用聚集索引。
    • 如果您重新阅读我的问题,您会发现现有的 PK 是非集群的。要点是:优化器在任何情况下都会寻找聚集索引进行查找,还是会首先寻找 PK,即使它是非聚集的?
    • @Shnugo:- 是的,看看我之前的评论,我已经说过,While look up the clustered index will be used. 查找时将使用聚集键索引而不是主键。
    猜你喜欢
    • 2013-08-07
    • 2021-01-14
    • 2011-10-12
    • 2013-03-22
    • 2014-08-27
    • 1970-01-01
    • 2021-09-07
    • 2014-04-27
    相关资源
    最近更新 更多