sql-server-2005 – datetime字段上的SQL Server主键

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – datetime字段上的SQL Server主键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sql Server 2005中创建一个新表,需要2个字段:DateTime和MyValue(Int32). DateTime字段将是唯一的,因此我将在其上设置唯一约束.

哪种表结构更好,为什么?

MyIndex(PK,int)
MyDate(日期时间)(IX_UniqueKey)
MyValue(int)

要么

MyDate(PK,日期时间)
MyValue(int)

我的感觉是我不想在这个表中使用人工PK(MyIndex),因为它是不必要的,因为日期将是唯一的,我将使用它们来访问任何记录.然而,拥有一个人工PK可能会更有效率……?

解决方法

如果你说日期是独一无二的,你的意思是你认为它们是独一无二的,或者它们的独特性是由问题陈述保证的吗?根据我的经验,有些东西比想象的要简单得多(美国社会保障号码就是一个例子).

如果日期值不保证唯一,则应添加整数键.

如果日期值保证唯一,它们会改变吗?如果他们确实改变了,他们是否被其他表引用?如果两个答案都是“是”,您可能应该添加整数键.

如果日期值保证唯一,并且不更改或未引用,则可以将它们用于键.常规DATETIME是8个字节,标准INTEGER值是4个字节,这可能对索引产生轻微影响.如果您的日期值只是日期,或者只是精确到分钟或更少,并且在类型允许的更受限制的范围内,您可以使用SMALLDATETIME并将这些索引值减少到4个字节.

猜你在找的MsSQL相关文章