Mysql

我可以創建一個沒有 PK 的 InnoDB 表嗎?如果是這樣,二級索引會用作聚集索引嗎?

  • May 25, 2011

是否可以創建沒有主鍵的 InnoDB 表?

由於 InnoDB 表的結構是圍繞 PK 的聚集索引,那麼沒有 PK 的表的結構是什麼?該表是否仍然是聚集索引,但圍繞輔助鍵?

謝謝。

如果您有一個不為空的唯一鍵,它會在內部被提升為集群鍵(或者如果您有多個符合此條件的鍵 - 第一個鍵。)

如果您沒有不為空的唯一鍵,則會創建一個長度為 6 字節的隱藏鍵。

沒有辦法指定要聚集的鍵,也沒有辦法沒有聚集索引。

是的,在任何 RDBMS 上,如果您仍然有一個具有不可為空列的唯一索引來標識各個行。

“唯一鍵”和“主鍵”之間的區別在於 PK 不允許 NULL。NULL 不與 NULL 進行比較,因此您無法使用可為空的唯一鍵唯一標識行。特別是如果您的 RDBMS 忽略 NULL 的唯一性(例如,SQL Server 允許在唯一索引中最多有一個 NULL)

任何索引(PK 是索引)都可以聚集:但每個表都應該有聚集索引(在使用後清除的臨時表之外)。聚集索引可以是 PK、唯一鍵或其他索引。

我確信MySQL允許分離索引唯一性和集群

引用自:https://dba.stackexchange.com/questions/2002