這篇文章主要講解了“主鍵與聚集索引的區(qū)別有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“主鍵與聚集索引的區(qū)別有哪些”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到合江網(wǎng)站設(shè)計與合江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋合江地區(qū)。主鍵(PRIMARY KEY )
來自MSDN的描述:
表通常具有包含標(biāo)識表中每一行的值的一列或一組列。這樣的一列或多列稱為表的主鍵 (PK),用于強制表的實體完整性。在創(chuàng)建或修改表時,您可以通過定義 PRIMARY KEY 約束來創(chuàng)建主鍵。
一個表只能有一個 PRIMARY KEY 約束,并且 PRIMARY KEY 約束中的列不能接受空值。由于 PRIMARY KEY 約束可保證數(shù)據(jù)的性,因此經(jīng)常對標(biāo)識列定義這種約束。
如果為表指定了 PRIMARY KEY 約束,則 SQL Server 2005 數(shù)據(jù)庫引擎 將通過為主鍵列創(chuàng)建索引來強制數(shù)據(jù)的性。當(dāng)在查詢中使用主鍵時,此索引還可用來對數(shù)據(jù)進(jìn)行快速訪問。因此,所選的主鍵必須遵守創(chuàng)建索引的規(guī)則。
創(chuàng)建主鍵時,數(shù)據(jù)庫引擎 會自動創(chuàng)建的索引來強制實施 PRIMARY KEY 約束的性要求。如果表中不存在聚集索引或未顯式指定非聚集索引,則將創(chuàng)建的聚集索引以強制實施PRIMARY KEY 約束。
聚集索引
聚集索引基于數(shù)據(jù)行的鍵值在表內(nèi)排序和存儲這些數(shù)據(jù)行。每個表只能有一個聚集索引,因為數(shù)據(jù)行本身只能按一個順序存儲。
每個表幾乎都對列定義聚集索引來實現(xiàn)下列功能:
可用于經(jīng)常使用的查詢。
提供高度性。
兩者的比較
下面是一個簡單的比較表
主鍵 | 聚集索引 | |
用途 | 強制表的實體完整性 | 對數(shù)據(jù)行的排序,方便查詢用 |
一個表多少個 | 一個表最多一個主鍵 | 一個表最多一個聚集索引 |
是否允許多個字段來定義 | 一個主鍵可以多個字段來定義 | 一個索引可以多個字段來定義 |
是否允許 null 數(shù)據(jù)行出現(xiàn) | 如果要創(chuàng)建的數(shù)據(jù)列中數(shù)據(jù)存在null,無法建立主鍵。 創(chuàng)建表時指定的 PRIMARY KEY 約束列隱式轉(zhuǎn)換為 NOT NULL。 | 沒有限制建立聚集索引的列一定必須 not null . 也就是可以列的數(shù)據(jù)是 null 參看最后一項比較 |
是否要求數(shù)據(jù)必須 | 要求數(shù)據(jù)必須 | 數(shù)據(jù)即可以,也可以不。看你定義這個索引的 UNIQUE 設(shè)置。 (這一點需要看后面的一個比較,雖然你的數(shù)據(jù)列可能不,但是系統(tǒng)會替你產(chǎn)生一個你看不到的列) |
創(chuàng)建的邏輯 | 數(shù)據(jù)庫在創(chuàng)建主鍵同時,會自動建立一個索引。 如果這個表之前沒有聚集索引,同時建立主鍵時候沒有強制指定使用非聚集索引,則建立主鍵時候,同時建立一個的聚集索引 | 如果未使用 UNIQUE 屬性創(chuàng)建聚集索引,數(shù)據(jù)庫引擎 將向表自動添加一個四字節(jié) uniqueifier 列。 必要時,數(shù)據(jù)庫引擎 將向行自動添加一個 uniqueifier 值,使每個鍵。此列和列值供內(nèi)部使用,用戶不能查看或訪問。 |
感謝各位的閱讀,以上就是“主鍵與聚集索引的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對主鍵與聚集索引的區(qū)別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!