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(PK,日期时间) 我的感觉是我不想在这个表中使用人工PK(MyIndex),因为它是不必要的,因为日期将是唯一的,我将使用它们来访问任何记录.然而,拥有一个人工PK可能会更有效率……? 解决方法如果你说日期是独一无二的,你的意思是你认为它们是独一无二的,或者它们的独特性是由问题陈述保证的吗?根据我的经验,有些东西比想象的要简单得多(美国社会保障号码就是一个例子).如果日期值不保证唯一,则应添加整数键. 如果日期值保证唯一,它们会改变吗?如果他们确实改变了,他们是否被其他表引用?如果两个答案都是“是”,您可能应该添加整数键. 如果日期值保证唯一,并且不更改或未引用,则可以将它们用于键.常规DATETIME是8个字节,标准INTEGER值是4个字节,这可能对索引产生轻微影响.如果您的日期值只是日期,或者只是精确到分钟或更少,并且在类型允许的更受限制的范围内,您可以使用SMALLDATETIME并将这些索引值减少到4个字节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 从具有重试详细信息的表(id和重试计数)中检索失败的
- SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问
- 单元测试 – 单元测试 – 数据库和固定装置
- reporting-services – 无法在SSRS 2008 R2订阅中选择多值参
- 数据库设计 – 轮询是从数据库更新应用程序数据的唯一方法吗
- MSSQL中递归SQL查询语句实例说明-
- 所有数据库的MySQL Master-Master复制.怎么样?
- 重装SQLServer2008,提示:MsiGetProductInfo 无法检索 Pro
- SqlServer数据库基础——使用JDBC对表增删改查
- Sqlserver语句大全