如果我们在DB2-BIGINT或Decimal(13,0)类型中将其中一个设置为主键,需要建议哪个Datatype可以提供更好的性能?
我怀疑Decimal(13,0)一旦密钥增长到一个非常大的尺寸就会出现问题,但我想要更好的回答/理解。
感谢。
答案 0 :(得分:2)
十进制没有问题。唯一的问题是,一旦被读取,DB2必须执行更多操作来检索数据。我的意思是,DB2读取数据然后它应该找到小数部分(精度),即使它是0。
另一方面,DB2将读取BigInt,它不需要任何进一步的过程。该号码在缓冲池上。
如果你要使用13个位置的整数(大多数),可能十进制会更好,因为你不会使用额外的字节,但是小数有精确的额外字节。通过以这种方式使用十进制,您将优化存储,这将转换为更好的IO,更好的性能。但是,它取决于表的其他列。你必须测试哪一个能给你带来更好的表现。
使用压缩时,有更多的CPU周期来恢复信息。您必须测试性能是否受到影响。
答案 1 :(得分:0)
使用BIGINT
:
DECIMAL
将以Binary Coded Decimal的形式存储 - 例如,在iSeries上(我不记得它是否已打包或已分区)。不幸的是,无法与其他部署交谈。DECIMAL
/ NUMERIC
。< / LI>
注意,实际上,id只是一个位序列 - 事实上发生是一个整数(通常)是无关紧要的。最好将它们视为随机数据;顺序赋值是一个优化细节,通常存在间隙(回滚,系统崩溃等等),除了加入之外,它们对于任何其他东西都没有意义。