我有一个遗留系统,它使用一个表来排序编号。该表具有以下定义:
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)与使用常规标识列一起使用这样的设计对性能有何影响(尽可能具体) ? 这真的可以扩展吗?
我们看到很多争论是这个表,我想知道如果这些表被切换到标识列,可能会获得(或失去)哪种类型的性能提升?在这一点上,争论的来源尚不清楚。
(我不知道为什么原始设计中没有包含标识列——这是一个遗留数据库)