mysql,bigint或decimal用于存储> 32位值但小于64位

时间:2010-09-12 20:00:30

标签: mysql

我们需要存储最多2 ^ 38的整数值。有没有理由使用十进制(12,0)或者我们应该使用bigint吗?

2 个答案:

答案 0 :(得分:3)

在我看来,bigint会更好。它存储为MySQL本身可以理解的整数,无需任何转换,因此(我想)可以更快地进行操作。因此,如果使用bigint,则应该期望MySQL的效率稍高。

根据this manual page,您的号码的前9位将存储在一个四字节的块中,其余的数字(最多需要12位)将存储在一个双字节的块中。这意味着你的列每行占用6个字节,而bigint占8个字节。我建议除非a)你要存储一个真正淫秽的行数,这样占用的空间是一个严重的问题,并且b)你将需要查询有问题的数据很少,你应该和bigint一起去。

答案 1 :(得分:1)

这是一个假设,但我认为它是一个很好的...在64位机器上,我很确定访问64位整数是非常有效的,所以你应该坚持使用bigint。我不知道mysql如何存储小数,但我无法想象它如何比存储64位整数更有效。