日志记录数据库中的主键

时间:2011-05-06 20:33:04

标签: sql sql-server sql-server-2008 logging primary-key

我正在创建一个将记录PC使用情况的数据库。将有几个格式的条目:计算机,用户,审计时间。它用于跟踪在执行审计时谁登录到哪台计算机。我们公司及其各自部门的所有计算机和用户的计算机和用户参考表。

我应该将Computer和AuditTime组合成一个复合键吗?在真正指定主键时是否会产生性能损失或增益,此表上的唯一约束是不必要的?

数据库是MS SQL Server 2008。

2 个答案:

答案 0 :(得分:3)

编辑:投票给Marc_s!

拥有主键会影响性能 - 这就是为什么它们通常不会在具有高插入,低读取使用(IE:日志)的表中配置。但群集密钥很好。

答案 1 :(得分:3)

默认情况下,SQL Server会将您的主键作为群集密钥(除非您明确告诉它),正如Kimberly Tripp在她的博客文章The Clustered Index Debate Continues中所示,在表上拥有聚簇索引对任何人都有益操作 - 包括INSERT和DELETE - 只要它是 right 类型的聚簇索引。

一个好的聚集索引应该是:

  • 独特
  • 稳定(不变)
  • 不断增加

最合适的是INT IDENTITY替代密钥 - 对于绝大多数情况,我会建议不要使用复合指数。