Mysql
我可以創建一個沒有 PK 的 InnoDB 表嗎?如果是這樣,二級索引會用作聚集索引嗎?
是否可以創建沒有主鍵的 InnoDB 表?
由於 InnoDB 表的結構是圍繞 PK 的聚集索引,那麼沒有 PK 的表的結構是什麼?該表是否仍然是聚集索引,但圍繞輔助鍵?
謝謝。
如果您有一個不為空的唯一鍵,它會在內部被提升為集群鍵(或者如果您有多個符合此條件的鍵 - 第一個鍵。)
如果您沒有不為空的唯一鍵,則會創建一個長度為 6 字節的隱藏鍵。
沒有辦法指定要聚集的鍵,也沒有辦法沒有聚集索引。
是的,在任何 RDBMS 上,如果您仍然有一個具有不可為空列的唯一索引來標識各個行。
“唯一鍵”和“主鍵”之間的區別在於 PK 不允許 NULL。NULL 不與 NULL 進行比較,因此您無法使用可為空的唯一鍵唯一標識行。特別是如果您的 RDBMS 忽略 NULL 的唯一性(例如,SQL Server 允許在唯一索引中最多有一個 NULL)
任何索引(PK 是索引)都可以聚集:但每個表都應該有聚集索引(在使用後清除的臨時表之外)。聚集索引可以是 PK、唯一鍵或其他索引。
我確信MySQL允許分離索引唯一性和集群