主鍵索引和普通索引的區(qū)別 主鍵索引和唯一索引的區(qū)別?
主鍵索引和唯一索引的區(qū)別?主鍵、自增主鍵、主鍵索引、唯一索引概念區(qū)別與性能區(qū)別如下 :1、概念上的區(qū)別:主鍵:指字段唯一不為空值的列。主鍵索引:指的就是主鍵,主鍵沒有明確的概念定義,主鍵既是約束,也是
主鍵索引和唯一索引的區(qū)別?
主鍵、自增主鍵、主鍵索引、唯一索引概念區(qū)別與性能區(qū)別如下 :
1、概念上的區(qū)別:主鍵:指字段唯一不為空值的列。主鍵索引:指的就是主鍵,主鍵沒有明確的概念定義,主鍵既是約束,也是索引,主鍵是索引的一種,是唯一索引的特殊類型。創(chuàng)建主鍵的時候,數(shù)據(jù)庫默認(rèn)會為主鍵創(chuàng)建一個唯一索引。自增主鍵:字段類型為數(shù)字、自增、并且是主鍵。唯一索引:索引列的值必須唯一,但允許有空值。主鍵是唯一索引,這樣說沒錯。但反火來說唯一索引也是主鍵就錯誤了,因為唯一索引允許空值,主鍵不允許有空值,所以不能說唯一索引也是主鍵。
2、性能上的區(qū)別: 查詢:唯一索引 > 自增主鍵 > 主鍵(主鍵索引)插入:主鍵 > 自增主鍵 > 唯一索引
主鍵索引和唯一索引的區(qū)別面試題?
主鍵是一種約束,唯一索引是一種索引,兩者在本質(zhì)上是不同的。
主鍵創(chuàng)建后一定包含一個唯一性索引,唯一性索引并不一定就是主鍵。
唯一性索引列允許空值,而主鍵列不允許為空值。
主鍵列在創(chuàng)建時,已經(jīng)默認(rèn)為空值 唯一索引了。
主鍵可以被其他表引用為外鍵,而唯一索引不能。
一個表最多只能創(chuàng)建一個主鍵,但可以創(chuàng)建多個唯一索引。
主鍵更適合那些不容易更改的唯一標(biāo)識,如自動遞增列、身份證號等。
唯一索引和主鍵有什么不同?
主鍵與唯一索引的區(qū)別:其實指定列的索引就相當(dāng)于對指定的列進(jìn)行排序,為什么要排序 呢?因為排序有利于對該列的查詢,可以大大增加查詢效率。(那么可能有人認(rèn)為應(yīng)該對所有的列排序,這樣就可以增加整個數(shù)據(jù)庫的查詢效率?這樣的想法是錯誤 的,原因是建立索引也是要消耗系統(tǒng)資源的,給每個表里的每個列都建立索引那么將對系統(tǒng)造成極大的負(fù)擔(dān),那就更別提效率了?。?--------簡單的說建 立一個列的索引,就相當(dāng)與建立一個列的排序。
主鍵其實就是一個索引,但是這個索引跟一般的索引有所不同,不 同在于主鍵所在的列里的每一個的記錄都是唯一的,也可以說不能在主鍵里出現(xiàn)相同的記錄,在同一個表里只能有一個主鍵。(主鍵等于索引,索引不一定等于主 鍵)----------簡單的說主鍵就是所在列不能出現(xiàn)相同記錄的特殊索引,而且這個索引只能在表里出現(xiàn)一次
mysql主鍵索引和唯一索引的區(qū)別?
主鍵約束比唯一索引約束嚴(yán)格,當(dāng)沒有設(shè)定主鍵時,非空唯一索引自動稱為主鍵。對于主鍵和唯一索引的一些區(qū)別主要如下:
1.主鍵不允許空值,唯一索引允許空值
2.主鍵只允許一個,唯一索引允許多個
3.主鍵產(chǎn)生唯一的聚集索引,唯一索引產(chǎn)生唯一的非聚集索引
注:聚集索引確定表中數(shù)據(jù)的物理順序,所以是主鍵是唯一的(聚集就是整理數(shù)據(jù)的意思)