1. 程式人生 > >MySQL資料庫為什麼習慣用自增序列作為主鍵

MySQL資料庫為什麼習慣用自增序列作為主鍵

對於這個問題需要從MySQL的索引以及儲存引擎談起:

InnoDB的primary key為cluster index,除此之外,不能通過其他方式指定cluster index,如果InnoDB不指定primary key,InnoDB會找一個unique not null的field做cluster index,如果還沒有這樣的欄位,則InnoDB會建一個非可見的系統預設的主鍵---row_id(6個位元組長)作為cluster_index。

建議使用數字型auto_increment的欄位作為cluster index。不推薦用字串欄位做cluster index (primary key) ,因為字串往往都較長, 會導致secondary index過大(secondary index的葉子節點儲存了primary key的值),而且字串往往是亂序。cluster index亂序插入容易造成插入和查詢的效率低下。

以上就是為什麼最好用自增長序列作為主鍵的原因。