在數據庫上生成主鍵或在應用程序代碼中生成主鍵時,尤其是在爲鍵使用GUID/UniqueIdentifier數據類型時,「更好」是什麼?在數據庫中創建Guid PK。代碼
我已經閱讀了使用Guid和int數據類型之間的區別,它聽起來像Guids對於所謂的「離線生成」是可行的。
E.g.
而不是在數據庫中有一個NEWID()
contstraint。在一個項目中(我們使用實體框架),我們在應用程序代碼Guid.NewGuid()
中使用插入數據時生成PK。
這是一個壞方法嗎?
我的擔憂是:
- 數據庫索引:數據庫性能,因爲標識的可能不是連續
- ,關鍵是已經使用了一個64十億機會。 (考慮到應用不會很大,但可能需要增長空間)
- 也許還有其他缺點?
是的我知道NEWSEQUENTIALID()對不起這就是我的意思是「NEWID()」這並不真正對我的問題說,是在數據庫中還是在代碼中創建更好,或者可以在代碼中創建嗎? – John 2012-03-13 08:13:05
我認爲可以在代碼中創建。據我所知,guid是基於服務器的時間,MAC地址或IP地址(不確定)生成的。想不出任何關鍵的區別。 :) – fengd 2012-03-13 08:23:04