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



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

  1. 我可以有没有聚集索引的主键吗?(我知道当我们在列上创建主键约束时,默认情况下它会创建一个聚集索引。那么在这种情况下,我应该如何停用聚集索引?

  2. 我可以将多个列聚集在一起吗?(就像在非聚集中一样,我可以为单个非聚集索引连接不同的列)。

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


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

是的。如前所述,默认情况下,主键约束由聚集索引提供支持。可以通过按如下所示声明约束来指示 SQL Server 使用非聚集索引支持约束:

ALTER TABLE MyTable
    ADD CONSTRAINT PK_MyTable
        PRIMARY KEY NONCLUSTERED(Col1);

我可以将多个列聚集在一起吗?(就像在非聚集中一样,我可以为单个非聚集索引连接不同的列)。

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

CREATE UNIQUE CLUSTERED INDEX IX_MyTable_Clus
    ON MyTable(Col1, Col2, Col3);

参考资料: ALTER TABLECREATE INDEX

MySQLSQL-SERVER是不同的RDBMS。 它们具有不同的功能和不同的语法。

使用 InnoDB 时,MySQL总是使 PK 成为聚簇索引。

但是,SQL-SERVER将允许您创建不带 CLUSTERED 关键字的 PK,并允许您在另一个索引中使用它。

在这两种情况下,主键和索引(聚集与否)都可以覆盖多个字段。

相关内容

  • 没有找到相关文章

最新更新