1. 程式人生 > >為什麼要使用自增ID作為主鍵

為什麼要使用自增ID作為主鍵

1.從業務上來說

在設計資料庫時不需要費盡心思去考慮設定哪個欄位為主鍵。然後是這些欄位只是理論上是唯一的,例如使用圖書編號為主鍵,這個圖書編號只是理論上來說是唯一的,但實踐中可能會出現重複的        情況。所以還是設定一個與業務無關的自增ID作為主鍵,然後增加一個圖書編號的唯一性約束。

2.從技術上來說

如果表使用自增主鍵,那麼每次插入新的記錄,記錄就會順序新增到當前索引節點的後續位置,當一頁寫滿,就會自動開闢一個新的頁。 總的來說就是可以提高查詢和插入的效能。

對InnoDB來說
1: 主鍵索引既儲存索引值,又在葉子節點中儲存行的資料,也就是說資料檔案本身就是按照b+樹方式存放資料的。
2: 如果沒有定義主鍵,則會使用非空的UNIQUE鍵做主鍵 ; 如果沒有非空的UNIQUE鍵,則系統生成一個6位元組的rowid做主鍵;
聚簇索引中,N行形成一個頁(一頁通常大小為16K)。如果碰到不規則資料插入時,為了保持B+樹的平衡,會造成頻繁的頁分裂和頁旋轉,插入速度比較慢。所以聚簇索引的主鍵值應儘量是連續增長的值,而不是隨機值(不要用隨機字串或UUID)。
故對於InnoDB的主鍵,儘量用整型,而且是遞增的整型。這樣在儲存/查詢上都是非常高效的。