有人建议我使用float作为表的主键而不是使用BIGINT更好。我们可以将浮动主键设为身份吗?
答案 0 :(得分:8)
考虑:
为什么你需要一个浮动作为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一起去。