mysql優(yōu)化 主鍵索引和唯一索引的區(qū)別面試題?
主鍵索引和唯一索引的區(qū)別面試題?主鍵是一種約束,唯一索引是一個(gè)索引。它們本質(zhì)上是不同的。創(chuàng)建主鍵后,它必須包含唯一索引,該索引不一定是主鍵。唯一索引列允許空值,但主鍵列不允許空值。創(chuàng)建主鍵列時(shí),默認(rèn)情
主鍵索引和唯一索引的區(qū)別面試題?
主鍵是一種約束,唯一索引是一個(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)等
數(shù)據(jù)表中主鍵是索引么?要不要為主鍵建索引呢?
為表創(chuàng)建主鍵后,可以使用toad工具查看表的腳本。
相關(guān)主鍵的代碼分為兩部分。一種是建立唯一索引,另一種是添加約束。因此,主鍵是索引和約束的組合。創(chuàng)建唯一索引WWJ.CLMHTEDCTMP_uupk開WWJ.CLMHTEDCTMP(MODULEID,LASTEVENTTIME)表空間WWJNOPARALLELALTER表WWJ.CLMHTEDCTMP ADD(CONSTRAINT CLMHTEDCTMPPK primary key(module,lastventtime)使用索引表空間WWJ
主鍵和唯一索引的區(qū)別:實(shí)際上,指定列的索引相當(dāng)于對(duì)指定列進(jìn)行排序。為什么排序?由于排序有利于對(duì)列的查詢,可以大大提高查詢效率。(所以可能有人認(rèn)為應(yīng)該對(duì)所有的列進(jìn)行排序,以提高整個(gè)數(shù)據(jù)庫的查詢效率?這種想法是錯(cuò)誤的,因?yàn)榻⑺饕矔?huì)消耗系統(tǒng)資源。為每個(gè)表中的每一列建立索引會(huì)給系統(tǒng)帶來很大的負(fù)擔(dān),更不用說效率了!)---------簡單地說,構(gòu)建列索引相當(dāng)于構(gòu)建列排序。
主鍵實(shí)際上是一個(gè)索引,但此索引與常規(guī)索引不同。不同之處在于,主鍵所在列中的每條記錄都是唯一的。也就是說,同一條記錄不能出現(xiàn)在主鍵中,同一個(gè)表中只能有一個(gè)主鍵。(主鍵等于索引,索引不等于主鍵)--簡而言之,主鍵是一個(gè)特殊的索引,它的列不能有相同的記錄,這個(gè)索引在表中只能出現(xiàn)一次