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