MySQL:bigint Vs int

lau*_*kok 43 mysql int database-design biginteger auto-increment

我一直在使用INT(10),并只注意到WordPress使用BIGINT(20) - 所不同的是使用的ID自动递增BIGINT(20)和int(10)?我应该将哪一个用于id列?

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)

VS

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)

谢谢.

Joh*_*ker 65

根据MySQL 数字类型手册页的详细信息,差异纯粹是可以存储的最大值(对于bigint(20)为18,446,744,073,709,551,615,对于int(10)为4,294,967,295).

顺便说一句,除非你使用ZEROFILL,否则使用(20)和(10)在很大程度上是无关紧要的.(即:它实际上并没有改变存储数量的大小 - 这完全取决于类型.)

但是,实际上应该注意的是,除非你是一个非常活跃的博主,否则你很快就不会达到这些限制中的任何一个.

  • 应该注意的是,bigint消耗8个字节的存储空间,而4个字节用于int.签名(mysql默认)int允许值> 20亿; 因此,绝大多数时候它是id列的优秀候选者.当然,除非你真的在处理列类型/存储是一个问题的巨大记录集,否则bigint vs int并不是非常重要 (6认同)

Cro*_*zin 10

唯一的区别是类型的范围.INT是一个32位长,而BIGINT64位长,因此它可以存储更大的数字123456789123456789(不能存储为INT).

以下是MySQL整数类型的完整列表:http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html