Jimmy Nilsson討論了他的COMB guid概念here。這個概念在NHibernate和其他圈子中很受歡迎,因爲它的性能價值超過了標準的GUID,而這些GUID通常更加隨機。COMB guid的性能值
但是,在測試中,這似乎並非如此。我錯過了什麼嗎?
測試用例:
我有一個表稱爲臨時(不是臨時表,只是一個名爲「TEMP」一表),在它585,000行。我有一個名爲Codes的新表,並且希望將所有585,000個代碼值從臨時表複製到代碼表。測試SQL我執行了:
set statistics time on;
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select newid(), codevalue from temp
truncate table codes;
DBCC DBREINDEX ('codes', '', 90);
insert into codes (codeid, codevalue)
select CAST(CAST(NEWID() AS BINARY(10)) + CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER), codevalue from temp
性能標準GUID值:
SQL Server的執行時間:CPU 時間= 17250毫秒,經過的時間= 15735 毫秒。
(585000行(S)的影響)
性能與COMB GUID值:
SQL Server的執行時間:CPU 時間= 17500毫秒,經過的時間= 16419 毫秒。
(585000行(S)的影響)
我缺少什麼? COMB GUID值導致稍長的時間,大概是由於額外的轉換。我認爲重點是通過使用最後6個字節的日期對GUIDS進行半排序來減少插入時間,但性能增益似乎不存在。
難道我或任何回答可以滿足你的問題? – gbn 2011-10-24 14:22:50
@Chris:gbn是否正確? – jgauffin 2014-01-02 18:23:53