我能有没有聚集索引主键? 也可我已经多值聚集索引?(Can I have a primary k

2019-06-26 20:35发布

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

  1. 我能有没有聚集索引主键? (我知道,当我们在一个列上创建主键约束,它在默认情况下会创建一个聚集索引。因此,在这种情况下,我应该如何禁用聚集索引?)

  2. 我可以有多个列一起聚集索引? (如在非聚集在哪里可以用于单个非聚集索引加入不同的列)。

Answer 1:

(这个答案是SQL Server 2005+而已。我什么都不知道关于MySQL)。


我能有没有聚集索引主键?

是。 至于你提到的一个主键约束是通过默认情况下,聚簇索引的支持。 你可以告诉SQL服务器通过声明约束如下与非聚集索引备份约束:

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



Answer 2:

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

如果使用的是InnoDB, MySQL总是让PK聚集索引。

SQL-SERVER ,但是,将让你没有创建一个PK CLUSTERED关键字,让你使用它的另一个指标内代替。

在两种情况下,PrimaryKeys和索引(群集或不)可覆盖多个字段。



文章来源: Can I have a primary key without clustered index ? Also can I have multivalued clustered index?