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