溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQLSERVER聚集索引和主鍵的誤區(qū)是怎樣的

發(fā)布時(shí)間:2021-12-01 13:38:12 來(lái)源:億速云 閱讀:116 作者:柒染 欄目:數(shù)據(jù)庫(kù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)SQLSERVER聚集索引和主鍵的誤區(qū)是怎樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

很多人會(huì)把Primary Key和聚集索引搞混起來(lái),或者認(rèn)為這是同一個(gè)東西。這個(gè)概念是非常錯(cuò)誤的。 主鍵是一個(gè)約束(constraint),他依附在一個(gè)索引上,這個(gè)索引可以是聚集索引,也可以是非聚集索引。所以在一個(gè)(或一組)字段上有主鍵,只能說(shuō)明他上面有個(gè)索引,但不一定就是聚集索引。

 例如下面:

代碼如下: 

USE [pratice] GO CREATE TABLE #tempPKCL ( ID INT PRIMARY KEY CLUSTERED --聚集索引 )

USE [pratice] GO CREATE TABLE #tempPKNCL ( ID INT PRIMARY KEY NONCLUSTERED --非聚集索引 )

DROP TABLE [#tempPKCL] DROP TABLE [#tempPKNCL]

如果不加NONCLUSTERED和CLUSTERED關(guān)鍵字,默認(rèn)建的是聚集索引 而一個(gè)聚集索引里,是可以有重復(fù)值的。只要他沒(méi)有被同時(shí)設(shè)為主鍵,但是主鍵不能有重復(fù)值(不管依附在聚集索引上還是非聚集索引上) 強(qiáng)調(diào)這一點(diǎn),是因?yàn)橛行┤擞X(jué)得自己的表格上設(shè)置了主鍵,就認(rèn)為表格上有聚集索引,按照B-樹(shù)的方式管理了。如果沒(méi)有指定主鍵是個(gè)聚集索引,可能表格還是會(huì)以堆的方式管理,效率低下 -------------------------------------------------------------------------------- 關(guān)于排序和重復(fù)值: 排序:建立復(fù)合索引的時(shí)候會(huì)指定多個(gè)字段,那么這個(gè)索引順序是按哪個(gè)字段順序排序呢? 是按照索引上的第一個(gè)字段排序 

下面這個(gè)索引的排序順序是以ID這個(gè)字段排序的 1 CREATE INDEX tempPKNCL_id_ncl ON [dbo].[tempPKNCL]([ID],[a],[c]) 重復(fù)值:如果對(duì)多列定義了 PRIMARY KEY 約束,則一列中的值可能會(huì)重復(fù),但來(lái)自 PRIMARY KEY 約束定義中所有列的任何值組合必須唯一。 如下圖所示,Purchasing.ProductVendor 表中的 ProductID 和 VendorID 列構(gòu)成了針對(duì)此表的復(fù)合 PRIMARY KEY 約束。 這確保了 ProductID 和 VendorID 的組合是唯一的 意思是說(shuō),如果是復(fù)合主鍵,那么如果ProductID列有重復(fù),但是 ProductID 和 VendorID 的組合是唯一的 言下之意: 

(1)主鍵不是復(fù)合主鍵 

(2)主鍵建立在ProductID字段上 

(3)ProductID字段有重復(fù)值 那么主鍵建立肯定會(huì)失敗

上述就是小編為大家分享的SQLSERVER聚集索引和主鍵的誤區(qū)是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI