我有一個遺留系統正在使用表進行數字排序。該表具有以下定義:使用身份列或本地序列表的性能影響
dbo.id_table
(
table_name char(64) NOT NULL,
id_type char(5) NOT NULL,
data_type char(5) NOT NULL,
next_id_number int NOT NULL,
next_id_max char(15) NOT NULL
)
PRIMARY KEY CLUSTERED
(
table_name ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
此表在功能上等同於標識列。
下面是如何使用該表的方法: - 存儲過程運行以獲取表中下一個id值。例如,
exec id_proc 'bryans_table', @some_int_value output
我找專家來回答以下問題:
哪些性能問題(越具體越好)使用一個設計這樣與SQL Server 2008 R2(當前運行在兼容模式下,但計劃在未來的某個時間使用完整的2008 R2)與使用常規標識列?這是否可以擴展?
我們看到很多爭議是這張表,我想知道表是否切換到標識列什麼類型的性能增益可能會(或丟失)?此時爭論的來源不明。
(我不知道爲什麼沒有包括在原設計的標識列 - 這是一箇舊的數據庫)
您也可以考慮序列,儘管他們具有相同的行爲,性能。 – usr
@usr序列是SQL Server 2012中的新增功能,所以不幸的是它們在這種情況下不起作用 – alroc
此外,您應該詳細說明爲什麼您需要序列表。利用當前信息,他們唯一的優勢是保證連續的ID。 – usr