如果我需要在T-SQL数据库表中无意识地识别行,我会将它们设置为:
[id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY
但如果我需要ID在几个数据库(在不同的计算机上)中是唯一的,我会选择:
[uid] UNIQUEIDENTIFIER NOT NULL
然后在该列上设置索引:
CREATE INDEX index_name ON [TableName] ([uid]);
所以我想知道通过将INT更改为UNIQUEIDENTIFIER会对数据库产生多大的性能影响?
答案 0 :(得分:5)
GUID
不是代理值在数据库中唯一的唯一选项。立即想到两个选项:
BIGINT
并在每个数据库上设置标识种子,例如,数据库A上的1000000000,数据库B上的2000000000等。这支持许多数据库。在SQL Server 2012中,您将能够使用SEQUENCE更轻松地实现(2)。