Sql 我们可以在两个不同的列上创建聚集索引和主键吗?

Sql 我们可以在两个不同的列上创建聚集索引和主键吗?,sql,sql-server,Sql,Sql Server,声明主键后,默认情况下会在列上创建聚集索引。很可能有两个不同的列作为主键和聚集索引。但请记住,如果我首先在表上创建主键,也会创建聚集索引 现在,如果我在两个不同的列上需要它们,请删除主键约束,聚集索引将自动消失。现在,在列a上创建一个聚集索引,并将列B声明为主键,列B将有一个非聚集索引,默认情况下将在其上创建该索引,而不是聚集索引。通过这种方式,我们可以将两列作为主键,并在其上声明聚集索引。“默认情况下在该列上创建聚集索引”-除非您将PK指定为非聚集。您可以显式指定主键约束是聚集的还是非聚集的,

声明主键后,默认情况下会在列上创建聚集索引。

很可能有两个不同的列作为主键和聚集索引。但请记住,如果我首先在表上创建主键,也会创建聚集索引


现在,如果我在两个不同的列上需要它们,请删除主键约束,聚集索引将自动消失。现在,在列a上创建一个聚集索引,并将列B声明为主键,列B将有一个非聚集索引,默认情况下将在其上创建该索引,而不是聚集索引。通过这种方式,我们可以将两列作为主键,并在其上声明聚集索引。

“默认情况下在该列上创建聚集索引”-除非您将PK指定为非聚集。您可以显式指定主键约束是聚集的还是非聚集的,虽然默认情况下,如果没有其他聚集索引存在,PKs将被聚集。我认为默认情况下,当我们创建主键时,将创建聚集索引。如果没有其他聚集索引存在,并且忽略聚集/非聚集规范,PKs将被聚集。@SumeshEs是,默认情况下,但正如Dan所说,您可以显式地指定非聚集主键,而不允许出现默认值:
ID INT NOT NULL primary key nonclustered,