簡體   English   中英

表可以同時具有主索引和聚集索引嗎

[英]Can table have both primary & clustered index together

假設我們在 MYSQL 數據庫中有一個 Student 表,其模式如下。 這張表有大約百萬條記錄。

  • 身份證(公鑰)
  • 姓名
  • Aadhaar_ID
  • 地址
  • 入學_年份

上面的表格可以同時有下面的嗎?

  • ID 上的主索引。
  • 名稱的聚簇索引。

由於對數據進行排序是強制性的(用於創建 Clustered-Index 數據),因此不可能將上述 2 個索引放在一起。 我們只能有兩個。

MySQL (InnoDB) 規則:

  • 只有 1 個聚簇索引。
  • PRIMARY KEY必須是 UNIQUE 並且由非 NULL 列組成。
  • PK 確定數據的 B+Tree 中項目的順序。
  • 任何類型的索引(包括 PK)中存在間隙都是可以的。 (在許多情況下,正常操作會導致AUTO_INCREMENT id 出現間隙。)

據推測,“名稱”不能是唯一的?

所以,這樣做:

id INT UNSIGNED NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY(name, id),  -- to make access via `name` more efficient
INDEX(id)   -- sufficient to keep AUTO_INCREMENT happy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM