对于SQL服务器,最好是为标识列使用uniqueidentifier(GUID)还是bigint?
这取决于你在做什么:
如果速度是主要关注点,那么一个普通的老人int
可能足够大.
如果你真的有超过20亿(带有B;))记录,那么使用bigint
或顺序guid.
如果您需要能够轻松地与远程创建的记录同步,那么Guid
真的很棒.
更新
关于Guids的一些其他(不太明显的)注释:
它们可能对索引很难,而且会削弱数据库性能的核心
您可以使用顺序guid来获取某些索引性能,但放弃第二点中使用的一些随机性.
Guids可能很难通过hand(where id='xxx-xxx-xxxxx'
)进行调试,但是你也可以通过顺序guid(where id='xxx-xxx' + '123'
)返回一些.
出于同样的原因,Guids可以使基于身份的安全攻击变得更加困难 - 但并非不可能.(您不能只键入'http://example.com?userid=xxxx'
并希望获得其他人帐户的结果).
一般来说,我建议BIGINT
超过a GUID
(因为guids是大而慢),但问题是,你甚至需要它吗?(即你正在复制吗?)如果你期望不到20亿行,传统的INT
将是好的.