如果您有一個表,最多10條記錄,並且它在許多其他表(通過FK關係)中引用,並且每個表中至少有1,000,000條記錄。GUID vs Int
如果複製永遠不會被使用,你會推薦什麼類型的PK(GUID或tinyint)? 我碰到this page與followng摘錄:
的GUID SQL Server上可以執行比數值類型快,一旦你超過 約100000現代五金行。這是由於索引 優化(的GUID塊的級聯)MS已經實施
是真實的GUID會在我的情況下執行得更快?
在此先感謝;)
如果您有一個表,最多10條記錄,並且它在許多其他表(通過FK關係)中引用,並且每個表中至少有1,000,000條記錄。GUID vs Int
如果複製永遠不會被使用,你會推薦什麼類型的PK(GUID或tinyint)? 我碰到this page與followng摘錄:
的GUID SQL Server上可以執行比數值類型快,一旦你超過 約100000現代五金行。這是由於索引 優化(的GUID塊的級聯)MS已經實施
是真實的GUID會在我的情況下執行得更快?
在此先感謝;)
INT會更快 - 毫無疑問。並且使用更少的空間(好吧,有10行,這實際上並沒有太大差別)。
INT是IMO也有很多更容易使用:
SELECT (list of fields)
FROM dbo.MyTable
WHERE ID = 5
只是一大堆更容易編寫和記憶比
SELECT (list of fields)
FROM dbo.MyTable
WHERE OID = '8D1E4C8C-54B9-4EB2-B123-FC07E340EC7B'
所以我幾乎總是(以+ 95%案件)把我的投票在INT而不是GUID。由於GUID作爲SQL Server中的集羣鍵(主鍵默認使用)對於性能來說非常糟糕(請閱讀GUIDs as Primary Keys and/or the clustering key博客文章「The Queen of Indexing」,Kimberly Tripp關於該主題的背景信息),但是,我只是試圖讓它成爲一種習慣,儘可能使用INT(可能:INT IDENTITY)作爲我的主鍵和集羣鍵。
Marc
如果有疑問,檔案。但是在表格中有10行,我懷疑你會發現任何不同。
如果你能保證你的表永遠不會有超過10條記錄,那麼我會堅持使用整數。評論似乎只對非常大的表格(> 100,000行)有關。
小N的一切都很快。只需使用與數據庫其餘部分一致的PK類型。
對於引用table_with_10_rows的表中的行計數,如果這些表的行數超過10萬行,它可能不會有任何說法。
你的意思是GUID執行速度更快?如果是這樣,你能告訴我爲什麼? – 2009-09-29 10:55:54
你應該考慮的另一個選擇是使用tinyint代替int。看到這裏的爭論和反對:SOF question
我打算設計這個數據庫,所以使用配置文件不是一個好主意 – 2009-09-29 10:52:29