Sql-Server

為什麼 MS SQL Server SEQUENCE 沒有像 Oracle 這樣的 ORDER 參數?

  • August 2, 2019

for T-SQL的文件中CREATE SEQUENCE,您可以看到該CREATE SEQUENCE命令沒有ORDER參數。

為了比較,Oracle 文件CREATE SEQUENCE顯示ORDER/NOORDER選項:

ORDER

指定ORDER以保證按請求順序生成序列號。如果您使用序列號作為時間戳,則此子句很有用。對於用於生成主鍵的序列,保證順序通常並不重要。

ORDER如果您將 Oracle 數據庫與 Real Application Clusters 一起使用,則只有在保證有序生成時才需要。如果您使用獨占模式,則始終按順序生成序列號。

NOORDER

指定NOORDER是否不想保證按請求順序生成序列號。這是預設設置。

Microsoft SQL Server 是否為SEQUENCEs 提供了強大的排序約束?或者微軟是否認為它一般不重要?

在 SQL Server 中,所有序列號都是在單個實例上生成的,因此它們本身就已排序。而且,如果您只是將它們用作唯一數字,那無論如何都無關緊要。

Oracle 實現是不同的,因為在 RAC 環境中(不是所有 Oracle 實現),兩個序列號可能由兩個不同的“實例”生成(這對於 Oracle 來說是錯誤的術語,但只是在 SQL Server 中繪製等價)。通常,您不會關心第一個請求的請求是否比後來請求的請求更慢並且獲得的數字更高 - 除非,正如 Oracle 文件所說,您使用序列作為時間戳來真正反映原始請求的順序。

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