主鍵、自增主鍵、主鍵索引、唯一索引概念區別與效能區別

明天還有我發表於2016-03-03

概念區別:

主鍵:指欄位唯一不為空值的列。

主鍵索引:指的就是主鍵,主鍵沒有明確的概念定義,主鍵既是約束,也是索引,主鍵是索引的一種,是唯一索引的特殊型別。建立主鍵的時候,資料庫預設會為主鍵建立一個唯一索引。

自增主鍵:欄位型別為數字、自增、並且是主鍵。

唯一索引:索引列的值必須唯一,但允許有空值。主鍵是唯一索引,這樣說沒錯。但反火來說唯一索引也是主鍵就錯誤了,因為唯一索引允許空值,主鍵不允許有空值,所以不能說唯一索引也是主鍵。

效能區別:

通過測試,發現主鍵、自增主鍵、唯一索引的查詢效率不一樣,當然這個差距很小,總結為:

查詢:唯一索引 > 自增主鍵 > 主鍵(主鍵索引)

插入:主鍵 > 自增主鍵 > 唯一索引

測試場景:

建立3個表,名欄位相同:id,name,money,tradDate
各插入100W條相同的資料

table A:id為主鍵,table B:id自增並且是主鍵,tableC:id建立唯一索引

查詢:

效能:唯一索引 >自增主鍵> 主鍵(主鍵索引)

A表(主鍵):0.06s

B表(自增主鍵):0.01s,

C表(唯一索引):0.00s

插入:

10W條資料,批量插入,效能:主鍵 >自增主鍵 > 唯一索引

A表(主鍵):38.408s

B表(自增主鍵):38.708s,

C表(唯一索引):39.018s

寫了這麼多,忽然感覺做這個測試沒有什麼意義,有木有?

相關文章