sql-server-2005 - 版本号格式的主键 SQL 数据类型

标签 sql-server-2005 types primary-key

我正在处理的表有一个主键,它本质上是一个版本号。下面是版本号的几个示例:

1.0.0.0
1.1.2.24

对我来说,Varchar 似乎是最明显的选择,但我希望将主键设置为聚集索引 - 我在 SQL 性能网站上读到,由于分页问题,​​您应该避免在聚集主键中使用 varchar。

鉴于版本号的长度可变,因此该列最合适的数据类型是什么?

我正在处理的这个数据库正在运行 SQL Server 2005。

感谢您的帮助。

最佳答案

嗯,您始终可以一起使用四个 INT 字段 - MAJORMINORRELEASEBUILD ,这些是 16 个字节,就像 GUID - 还不错。

此方法的唯一缺点是,如果您需要在外键约束中引用此表,通常必须联接所有四个表。

我不会使用 VARCHAR - INT 更好(通常更快)。此外,由于 VARCHAR 的可变性质,事情可能会变得有点困惑(VARCHAR 字段可能会增长并导致各种问题,而 INT 始终保持 4 个字节)。

另一个相当流行的选项是为实际版本提供这四个字段,并使用一个额外的代理 VersionID INT IDENTITY 来实现最佳集群 key 性能。

关于sql-server-2005 - 版本号格式的主键 SQL 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251762/

相关文章:

sql-server - 将 SQL Server 2005 数据库的结构提取到 XML

sql - 如何使用 WHERE 子句优化 SQL 查询

typescript - 是否可以在没有 "is not assignable to parameter of type ' never'"错误的情况下使用具有不同联合类型的数组元素?

c# - 当我将 DATE 类型的参数传递给 Crystal 报表时,为什么会生成错误消息 "Invalid Parameter Value"?

javascript - 如何在流程中使用带有泛型的对象休息?

sql - 我们是否应该将代理键与自然键(唯一索引均值)结合起来以提高可读性并易于查询选择?

sql-server - sql server中的条件分组?

SQL Server 2005,如何将数据库图表复制到另一台服务器

hibernate - 在Grails中定义ID生成的特定策略

sql - 仅主键和主键约束有什么区别?