mysql 主鍵和唯一索引的區別

2021-09-28 05:09:28 字數 722 閱讀 5602

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

主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。

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

主鍵列在建立時,已經預設為非空值 + 唯一索引了。

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

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

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

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

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

索引是一種特殊的檔案(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。

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

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

主鍵索引和唯一索引的區別

區別 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。唯一性索引列允許空值,而主鍵列不允許為空值。主鍵列在建立時,已經預設為空值 唯一索引了。主鍵可以被其他表引用為外來鍵,而唯一索引不能。乙個表最多只能建立乙個主鍵,但可以建立多...

主鍵和唯一索引的區別

區別 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。唯一性索引列允許空值,而主鍵列不允許為空值。主鍵列在建立時,已經預設為空值 唯一索引了。主鍵可以被其他表引用為外來鍵,而唯一索引不能。乙個表最多只能建立乙個主鍵,但可以建立多...

主鍵和唯一索引的區別

主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。區別 1.主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。2.唯一性索引列允許空值,而主鍵列不允許為空值。3.主鍵列在建立時,已經預設為空值 唯一索引了。4.主鍵可以被其他表引用為外來鍵,而唯一索引不能。5.乙個表最多只能建立乙...