主鍵一定是唯一索引嗎 主鍵索引和唯一索引的區(qū)別?
主鍵索引和唯一索引的區(qū)別?主鍵、自增主鍵、主鍵索引和唯一索引的概念和性能差異如下:1。概念差異:主鍵:指字段中具有非空值的唯一列。主鍵索引:主鍵。主鍵沒有明確的定義。主鍵既是約束又是索引。主鍵是一種索
主鍵索引和唯一索引的區(qū)別?
主鍵、自增主鍵、主鍵索引和唯一索引的概念和性能差異如下:
1。概念差異:主鍵:指字段中具有非空值的唯一列。主鍵索引:主鍵。主鍵沒有明確的定義。主鍵既是約束又是索引。主鍵是一種索引,是一種特殊類型的唯一索引。創(chuàng)建主鍵時,默認(rèn)情況下,數(shù)據(jù)庫將為主鍵創(chuàng)建唯一索引。自動遞增主鍵:字段類型為數(shù)字、自動遞增、主鍵。唯一索引:索引列的值必須唯一,但允許空值。主鍵是唯一的索引。但是,說唯一索引也是主鍵是錯誤的,因為唯一索引允許空值,而主鍵不允許空值。因此,不能說唯一索引也是主鍵。
2. 性能差異:query:unique index> self-increasing primary key> primary key(主鍵索引)insert:primary key> self-increasing primary key> unique index
主鍵是一種約束,unique index是一個索引,本質(zhì)不同。
創(chuàng)建主鍵后,它必須包含唯一索引,該索引不一定是主鍵。
唯一索引列允許空值,但主鍵列不允許空值。
創(chuàng)建主鍵列時,默認(rèn)情況下它已經(jīng)是空值唯一索引。
主鍵可以被其他表引用為外鍵,但唯一索引不能。
一個表最多只能創(chuàng)建一個主鍵,但可以創(chuàng)建多個唯一索引。主鍵更適用于那些不易更改的唯一標(biāo)識,如自動遞增列、ID號等。
主鍵索引和唯一索引的區(qū)別面試題?
主鍵約束比唯一索引約束更嚴(yán)格。如果未設(shè)置主鍵,則非空唯一索引將自動稱為主鍵。主鍵和唯一索引之間的一些區(qū)別如下:
1。主鍵不允許空值,唯一索引允許空值
2。主鍵只允許一個,唯一索引只允許多個
3。主鍵生成唯一聚集索引,唯一索引生成唯一非聚集索引
注意:聚集索引決定了表中數(shù)據(jù)的物理順序,所以主鍵是唯一的(聚合就是排序規(guī)則)主鍵和唯一索引的區(qū)別:實際上,指定列的索引相當(dāng)于排序指定的列。為什么排序?由于排序有利于對列的查詢,可以大大提高查詢效率。(所以可能有人認(rèn)為應(yīng)該對所有的列進(jìn)行排序,以提高整個數(shù)據(jù)庫的查詢效率?這種想法是錯誤的,因為建立索引也會消耗系統(tǒng)資源。為每個表中的每一列建立索引會給系統(tǒng)帶來很大的負(fù)擔(dān),更不用說效率了?。?--------簡單地說,構(gòu)建列索引相當(dāng)于構(gòu)建列排序。
主鍵實際上是一個索引,但此索引與常規(guī)索引不同。不同之處在于,主鍵所在列中的每條記錄都是唯一的。也就是說,同一條記錄不能出現(xiàn)在主鍵中,同一個表中只能有一個主鍵。(主鍵等于索引,索引不等于主鍵)--簡而言之,主鍵是一個特殊的索引,它的列不能有相同的記錄,這個索引在表中只能出現(xiàn)一次