教您使用UniqueIdentifier選取SQL Server主鍵
SQL Server中可以以UniqueIdentifier數(shù)據(jù)類型選取SQL Server主鍵,下面就將為您介紹如何使用UniqueIdentifier選取SQL Server主鍵,供您參考。
SQL Server為我們提供了UniqueIdentifier數(shù)據(jù)類型,并提供了一個(gè)生成函數(shù)NEWID( ),使用NEWID( )可以生成一個(gè)***的UniqueIdentifier。UniqueIdentifier在數(shù)據(jù)庫(kù)中占用16個(gè)字節(jié),出現(xiàn)重復(fù)的概率非常小,以至于可以認(rèn)為是0。我們經(jīng)常從注冊(cè)表中看到類似{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}的東西實(shí)際上就是一個(gè)UniqueIdentifier,Windows用它來(lái)做COM組件以及接口的標(biāo)識(shí),防止出現(xiàn)重復(fù)。在.NET里管UniqueIdentifier稱之為GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一個(gè)GUID:
GUID u = System.Guid.NewGuid();
對(duì)于上面提到的Order與OrderDetail的程序,如果選用UniqueIdentifier作為SQL Server主鍵的話,我們完全可以避免上面提到的增加網(wǎng)絡(luò) RoundTrip的問(wèn)題。通過(guò)程序直接生成GUID填充主鍵,不用考慮是否會(huì)出現(xiàn)重復(fù)。
UniqueIdentifier 字段也存在嚴(yán)重的缺陷:首先,它的長(zhǎng)度是16字節(jié),是整數(shù)的4倍長(zhǎng),會(huì)占用大量存儲(chǔ)空間。更為嚴(yán)重的是,UniqueIdentifier的生成毫無(wú)規(guī)律可言,要想在上面建立索引(絕大多數(shù)數(shù)據(jù)庫(kù)在主鍵上都有索引)是一個(gè)非常耗時(shí)的操作。有人做過(guò)實(shí)驗(yàn),插入同樣的數(shù)據(jù)量,使用 UniqueIdentifier型數(shù)據(jù)做主鍵要比使用Integer型數(shù)據(jù)慢,所以,出于效率考慮,盡可能避免使用UniqueIdentifier型數(shù)據(jù)庫(kù)作為主鍵鍵值。
【編輯推薦】