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