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