我们应该使用float作为sql-server中的主键

时间:2012-05-24 11:55:02

标签: sql sql-server-2008 primary-key

有人建议我使用float作为表的主键而不是使用BIGINT更好。我们可以将浮动主键设为身份吗?

4 个答案:

答案 0 :(得分:8)

考虑:

  • 您可以创建一个浮点字段主键。
  • 你不能创建一个浮动字段IDENTITY。标识列必须是 数据类型int,bigint,smallint,tinyint或decimal或numeric with 比例为0
  • 你绝对不应该使用浮点字段作为PK。再说一遍,你可以, SQL Server会允许你但不推荐它主要是因为 @Andy说,花车是不准确的。

为什么你需要一个浮动作为PK呢?您是否需要像3,1234235234534这样的值来唯一标识您的行?

答案 1 :(得分:3)

为什么不将大数据类型用于主键:

保持索引的“宽度”尽可能窄。这样可以减小索引的大小,减少读取索引所需的磁盘I / O读取次数,从而提高性能。

如果可能,尝试在具有整数值而不是字符的列上创建索引。整数值的开销小于字符值。

不要将FLOAT或REAL数据类型用于主键,因为它们会增加不必要的开销并且会影响性​​能。

窄列上的索引优于宽列上的索引。索引越窄,SQL Server可以在数据页面上放置的条目就越多,这反过来又减少了访问数据所需的I / O量。

减小键的大小,从而减少连接过程中的读取I / O,并提高整体性能。

答案 2 :(得分:3)

注意你是如何浮动a = 1f并浮动b = 1f它们是否相同?

但是,如果(a == b)可能不正确,因为浮点数不准确。

答案 3 :(得分:0)

你不能将浮动作为身份。

使用float作为主键是非常糟糕的主意。你必须和bigint一起去。