伙计们,我想了解以下问题的答案:
-
我可以有没有聚集索引的主键吗?(我知道当我们在列上创建主键约束时,默认情况下它会创建一个聚集索引。那么在这种情况下,我应该如何停用聚集索引?
-
我可以将多个列聚集在一起吗?(就像在非聚集中一样,我可以为单个非聚集索引连接不同的列)。
(此答案仅适用于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 TABLE
, CREATE INDEX
MySQL
和SQL-SERVER
是不同的RDBMS。 它们具有不同的功能和不同的语法。
使用 InnoDB 时,MySQL
总是使 PK 成为聚簇索引。
但是,SQL-SERVER
将允许您创建不带 CLUSTERED
关键字的 PK,并允许您在另一个索引中使用它。
在这两种情况下,主键和索引(聚集与否)都可以覆盖多个字段。