MySQL:bigint 与 int

问题描述 投票:0回答:4

我一直在使用 int(10),只是注意到 WordPress 使用 bigint(20) - 使用 bigint(20) 和 int(10) 进行 id 自动增量有什么不同?我应该使用哪一个作为 id 列?

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

VS

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

谢谢。

mysql database-design int biginteger auto-increment
4个回答
90
投票

差异纯粹在于可以存储的最大值(我相信,bigint(20) 为 18,446,744,073,709,551,615,int(10) 为 4,294,967,295),根据 MySQL Numeric Types 手册页上的详细信息。

顺便说一句,除非您使用 ZEROFILL,否则 (20) 和 (10) 的使用基本上无关紧要。 (即:它实际上并没有改变存储的数字的大小 - 这完全取决于类型。)

但是,实际上,应该注意的是,您不太可能很快就会达到这些限制,除非您是一位真正活跃的博主。


20
投票

唯一的区别是类型的范围。

INT
是 32 位长,而
BIGINT
是 64 位长,因此它可以存储更大的数字,如
123456789123456789
(不能存储为
INT
)。

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


2
投票

为什么有人谈论它,因为使用其中之一没有任何区别。

数据库越大,迭代所有这些数据所需的时间就越多。

想象一下有人把你的车钥匙藏在包里。该袋子位于您面前的 20 个盒子之一中,每个盒子总共包含 8 袋。

这会花费很多时间,因为在最坏的情况下,您必须托运 20 个箱子中的 8 件行李,也就是 160 件行李。

现在将箱子内的行李数量减半至 4 个。您肯定会节省时间,因为最多需要托运 80 个行李。

同样的做法也适用于数据库。如果您使用 bigint 而不是 int (或medium、small、tiny),您会遇到性能下降的情况。这就是为什么您应该明智地选择数据类型。


0
投票

有趣的是,大多数评论只表达了对尺寸的担忧。即使对于 WordPress,BigInt 的使用也很重要。

目前,UUID 的使用比较普遍,因为我们在创建网站时应该胸怀大志。最后,也许我不是我页面上唯一的博主。也许我的整个社区都想表达自己。对于多次访问,插入 64 位 UUID 更安全。

© www.soinside.com 2019 - 2024. All rights reserved.