Sql-Server

單個 SQL Server 實例可以兩次發出相同的 SYSDATETIME 嗎?

  • March 28, 2017

我正在考慮使用 adatetime2(7)作為聚集索引。

如果我總是使用填充該列SYSDATETIME,同一個實例是否有可能兩次發出相同的值(假設我們不執行設置系統時鐘之類的操作)?

或者,什麼是確保此類列的唯一性的內聚策略,即使它是以時間精度為代價的?

對於我的使用,我真的只關心秒數,但我會在這個列上做很多範圍查詢,所以 CI看起來很合適。

是的。Windows 時鐘的解析度不錯,但並不完美。您應該使用另一個欄位,例如INT IDENTITY,以確保唯一性。但是,如果適合您的需要,請先在日期上進行分群。

或者,您可以使用DATETIMEPK,但使用儲存過程來監督插入,該儲存過程驗證傳入日期的唯一性,並在必要時暫停。如果你願意,我可以舉個例子。

編輯:

另一種選擇,從 ypercube 的評論中藉用,將是日期欄位上的非唯一聚集索引,以及該欄位上的唯一非聚集主鍵ID。這將使您的其他索引更小,因為它們將指向窄ID列,但也需要兩個躍點才能獲取實際數據。

引用自:https://dba.stackexchange.com/questions/51691