如何在 SQL 服务器中创建聚簇索引同时仍保留主键?

How to create a clustered index in SQL Server while still preserving the primary key?

我有一个名为 Players 的 table,其中包含这些列

Id, Name, Age

IdAge 是整数,Namechar(50).

我想在此 table 上创建聚集索引,以便 table 将按 Name 的升序排序。我发现每个带主键的table已经在主键上有一个聚簇索引,而table上只能有一个聚簇索引,如果我想添加另一个,我必须删除 Id.

上的主键约束

我的Player.Id已经是多个其他table中的外键了,所以我仍然想在Id上有主键约束,但我也想要一个聚集索引按名称对记录进行排序。

如何在 SQL 服务器中执行此操作?我正在使用 Microsoft SQL Server Management Studio。

您需要:

  1. 首先删除对您的 table Player
  2. 的所有 FK 约束
  3. 然后在 Id
  4. 上删除主聚集索引
  5. Player.Id 上创建一个带有 非聚集 索引的新主键 - 使用此命令: ALTER TABLE dbo.Player ADD CONSTRAINT PK_Player PRIMARY KEY NONCLUSTERED (Id);
  6. 然后在Player.Name
  7. 上创建聚簇索引
  8. 重新建立从所有 table 到 Player
  9. 的所有 FK 约束