使用DateTime作为主键的SQL Server

Jon*_*ner 11 sql-server database-design sql-server-2008

您好我的问题类似于:

MySQL:使用DATETIME作为主键

但是我对Sql Server特别感兴趣,我想用一个特定的场景来实际解决这个问题,而不是理论上和另一篇文章一样.

我想存储用户执行的事件/操作.多个用户在相同的100ms间隙中执行动作的几率非常低,并且不经常碰撞是可接受的.如果我可以离散地表达10ms甚至1ms的间隙,那么我对风险非常满意.

因此提出问题,我可以使用DateTime作为我的主键而不是唯一标识符,因为我将定期查询最新的100个事件并按事件发生的时间对事件进行排序.

cbp*_*cbp 6

是的,你可以,但这对我来说听起来很糟糕。如果您真的很担心性能,您可以使用顺序唯一标识符、自动递增整数,或者您可以为 DateTime 列提供自己的聚集索引(推荐)。


Joe*_*orn 5

如果您真的想避免为此(ID/身份列)使用代理键,我至少会将日期时间列与用户 ID 列组合起来作为复合键。这听起来更适合您的数据。