GUID

之前數據庫的標識列一直都是本身手動編寫的,雖然考慮到了不少的因素,但最後仍是難以免出現這樣那樣的問題,今天看到GUID,做爲惟一標識列,它確實是不錯的選擇,固然了,這個仍是要根據業務需求了.sql

我先說下什麼是GUID數據庫

GUID是由當前網卡id和當前計算機CPU指針時間共同組成的一串字符,該字符有16個字節,任什麼時候間段的兩臺計算機都沒法出現相同的GUID,因此使用GUID來做爲惟一標識列,咱們就不用擔憂key重複的問題.ide

固然,有人會發現,使用GUID來做爲key的話,這樣會暫用數據庫的內存,是的,相對於自增加列來講,這確實會加大使用數據庫的內存,這也是GUID的一個弊端;函數

同時,GUID還有一個弊端,也是我我的比較在乎的一點,GUID會下降數據庫的查詢效率,因此我我的建議,使用GUID時,最好配合其餘列的索引來使用.以便改善GUID的這一弊端ui

上面是它存在的弊端,有人可能會問,既然有這樣的弊端爲什麼還要使用GUID呢,自增加列一樣可使用啊.這話相對來講是沒有問題的,ok,下面我來解釋下GUID的相對優點,GUID的好處在於,第一,使用方便,不管是使用SQL仍是T-SQL,GUID的使用方法都比較簡單;第二:GUID有預知標識列的功能,有部分業務可能會讓我提早獲得即將insert到數據庫中的惟一標識列.就這一點來講,GUID極大方便的作到了這一點.這也是我使用它的一個重要緣由.spa

ok,說了這麼多了,咱們來看看T-SQL中,GUID是如何獲取到的吧.CODE也是至關簡單指針

  Guid g = Guid.NewGuid();
 string guid = g.toString();

簡單的兩句話即可獲得你想要的guid了...例:61995c9e-5fcf-4b2e-acd3-1b16bc83c4bf;是否是有點像註冊碼?固然了,這個是能夠用於註冊碼的.這裏的預知便起到了做用.code

下面我說下SQL中的用法blog

CREATE TABLE EXPMONTER
(
    ExId uniqueidentifier default(NewID()),
    DayTime varchar(15) default(getdate())
)
GO

關鍵字 UNIQUEIDENTIFIER ,sql中優函數NewID()能夠調用GUID,通常不填寫時建議採用默認數據.這裏就是簡單的GUID的使用.後續還會研究其具體作法,還有查詢速度等問題.索引

相關文章
相關標籤/搜索