varchar或int有很多记录吗?

时间:2017-05-12 00:46:59

标签: php mysql int varchar

对于像Facebook这样的网站,是使用int还是varchar?例如,对于Facebook上的帖子数量,有数十亿或数万亿。那么您对每个帖子ID使用int还是使用varchar? int的最大值是2,147,483,647,所以我很困惑。请帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

还有BIGINT。

签署范围为-9223372036854775808至9223372036854775807.

无符号范围是0到18446744073709551615。

这绰绰有余:)

答案 1 :(得分:3)

正如@Sammitch所提到的,UUID可以生成一个长度值,其范围比32位int大得多。 UUID生成128位值。

还要考虑主键可以是复合主键,因此可以大大扩展可能性的数量。

您询问了用户ID。我确实咨询了一个用于签名的32位INT用户ID的网站。原因是因为一个错误,他们为每个创建的新用户跳过了1000个或更多的值。因此,与一次增加用户ID 1相比,它们的耗尽速度要快得多。

我帮助他们将用户ID升级为BIGINT。我们必须在用户表和大约30个引用用户表的其他表中执行此操作(因为当其他表仍在使用INT并且无法引用较大的值时,为userid提供较大的值不会有好处)

另请参阅我对Integer overflow what will be next的回答。