加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:48:18 所属栏目:MsSql教程 来源:网络整理
导读:我在SQL Server 2005中创建一个新表,需要2个字段:DateTime和MyValue(Int32). DateTime字段将是唯一的,因此我将在其上设置唯一约束. 哪种表结构更好,为什么? MyIndex(PK,int) MyDate(日期时间)(IX_UniqueKey) MyValue(int) 要么 MyDate(PK,日期时间) MyValue
我在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个字节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读