我们需要存储最多2 ^ 38的整数值。有没有理由使用十进制(12,0)或者我们应该使用bigint吗?
答案 0 :(得分:3)
在我看来,bigint会更好。它存储为MySQL本身可以理解的整数,无需任何转换,因此(我想)可以更快地进行操作。因此,如果使用bigint,则应该期望MySQL的效率稍高。
根据this manual page,您的号码的前9位将存储在一个四字节的块中,其余的数字(最多需要12位)将存储在一个双字节的块中。这意味着你的列每行占用6个字节,而bigint占8个字节。我建议除非a)你要存储一个真正淫秽的行数,这样占用的空间是一个严重的问题,并且b)你将需要查询有问题的数据很少,你应该和bigint一起去。
答案 1 :(得分:1)
这是一个假设,但我认为它是一个很好的...在64位机器上,我很确定访问64位整数是非常有效的,所以你应该坚持使用bigint。我不知道mysql如何存储小数,但我无法想象它如何比存储64位整数更有效。