mysql 、 bigint 或decimal 用于存储大于 32 位但小于 64 位的值

Ano*_*nym 5 mysql

我们需要存储最多 2^38 的整数值。有什么理由使用decimal(12,0)还是应该使用bigint?

Ham*_*ite 4

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

根据本手册页,您的号码的前 9 位数字将存储在一个四字节块中,其余数字(最多需要 12 位)将存储在一个两字节块中。这意味着您的列每行占用 6 个字节,而 bigint 则占用 8 个字节。我建议除非a)您要存储真正令人讨厌的行数,这样占用的空间是一个严重的问题,并且b)您将需要很少查询有问题的数据,否则您应该与 bigint 一起去。