我正在处理的表有一个主键,它本质上是一个版本号。下面是版本号的几个示例:
1.0.0.0
1.1.2.24
对我来说,Varchar 似乎是最明显的选择,但我希望将主键设置为聚集索引 - 我在 SQL 性能网站上读到,由于分页问题,您应该避免在聚集主键中使用 varchar。
鉴于版本号的长度可变,因此该列最合适的数据类型是什么?
我正在处理的这个数据库正在运行 SQL Server 2005。
感谢您的帮助。
最佳答案
嗯,您始终可以一起使用四个 INT 字段 - MAJOR
、MINOR
、RELEASE
和 BUILD
,这些是 16 个字节,就像 GUID - 还不错。
此方法的唯一缺点是,如果您需要在外键约束中引用此表,通常必须联接所有四个表。
我不会使用 VARCHAR - INT 更好(通常更快)。此外,由于 VARCHAR 的可变性质,事情可能会变得有点困惑(VARCHAR 字段可能会增长并导致各种问题,而 INT 始终保持 4 个字节)。
另一个相当流行的选项是为实际版本提供这四个字段,并使用一个额外的代理 VersionID INT IDENTITY
来实现最佳集群 key 性能。
关于sql-server-2005 - 版本号格式的主键 SQL 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251762/