Sql-Server
單個 SQL Server 實例可以兩次發出相同的 SYSDATETIME 嗎?
我正在考慮使用 a
datetime2(7)
作為聚集索引。如果我總是使用填充該列
SYSDATETIME
,同一個實例是否有可能兩次發出相同的值(假設我們不執行設置系統時鐘之類的操作)?或者,什麼是確保此類列的唯一性的內聚策略,即使它是以時間精度為代價的?
對於我的使用,我真的只關心秒數,但我會在這個列上做很多範圍查詢,所以 CI看起來很合適。
是的。Windows 時鐘的解析度不錯,但並不完美。您應該使用另一個欄位,例如
INT IDENTITY
,以確保唯一性。但是,如果適合您的需要,請先在日期上進行分群。或者,您可以使用
DATETIME
PK,但使用儲存過程來監督插入,該儲存過程驗證傳入日期的唯一性,並在必要時暫停。如果你願意,我可以舉個例子。編輯:
另一種選擇,從 ypercube 的評論中藉用,將是日期欄位上的非唯一聚集索引,以及該欄位上的唯一非聚集主鍵
ID
。這將使您的其他索引更小,因為它們將指向窄ID
列,但也需要兩個躍點才能獲取實際數據。