mysql 主鍵和唯一索引的區別


主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。

主鍵創建后一定包含一個唯一性索引,唯一性索引並不一定就是主鍵。

唯一性索引列允許空值,而主鍵列不允許為空值。

主鍵列在創建時,已經默認為非空值 + 唯一索引了。

主鍵可以被其他表引用為外鍵,而唯一索引不能。

一個表最多只能創建一個主鍵,但可以創建多個唯一索引。

主鍵和唯一索引都可以有多列。

主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。

在 RBO 模式下,主鍵的執行計划優先級要高於唯一索引。 兩者可以提高查詢的速度。

 

索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含着對數據表里所有記錄的引用指針。

總體來說:主鍵相當於一本書的頁碼,索引相當於書的目錄。

其實主鍵和索引都是鍵,不過主鍵是邏輯鍵,索引是物理鍵,意思就是主鍵不實際存在,而索引實際存在在數據庫中,主鍵一般都要建,主要是用來避免一張表中有相同的記錄,索引一般可以不建,但如果需要對該表進行查詢操作,則最好建,這樣可以加快檢索的速度。 


免責聲明!

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



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