我可以拥有没有聚簇索引的主键吗?还可以有多值聚集索引吗?

Lea*_*ner 4 mysql sql sql-server clustered-index

伙计们,我想了解以下问题的答案:

  1. 我可以拥有没有聚簇索引的主键吗?(我知道,当我们在列上创建主键约束时,默认情况下会创建聚簇索引。因此,在这种情况下,应如何停用聚簇索引?)

  2. 我可以有一个包含多个列的聚集索引吗?(就像非集群一样,我可以为一个非集群索引连接不同的列)。

Jon*_*gel 6

(此答案仅适用于SQL Server 2005+。我对MySQL一无所知。)


我可以拥有没有聚簇索引的主键吗?

是。如前所述,默认情况下,主键约束由聚簇索引支持。您可以通过声明约束来告诉SQL Server使用非聚集索引来支持约束:

ALTER TABLE MyTable
    ADD CONSTRAINT PK_MyTable
        PRIMARY KEY NONCLUSTERED(Col1);
Run Code Online (Sandbox Code Playgroud)

我可以有一个包含多个列的聚集索引吗?(就像非集群一样,我可以为一个非集群索引连接不同的列)。

是的,您可以定义一个索引,并且索引键中的一列以上。实际上,它与非聚集索引没有什么不同。

CREATE UNIQUE CLUSTERED INDEX IX_MyTable_Clus
    ON MyTable(Col1, Col2, Col3);
Run Code Online (Sandbox Code Playgroud)

参考文献:ALTER TABLECREATE INDEX