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


1.從業務上來說

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

2.從技術上來說

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM