Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 许多记录的Varchar或int?_Php_Mysql_Int_Varchar - Fatal编程技术网

Php 许多记录的Varchar或int?

Php 许多记录的Varchar或int?,php,mysql,int,varchar,Php,Mysql,Int,Varchar,对于Facebook这样的网站,它是使用int还是varchar?例如,就Facebook上的帖子数量而言,有几十亿或几万亿条。那么,您是对每个帖子id使用int,还是使用varchar?int的最大值是2147483647,所以我很困惑。请帮忙,谢谢。还有一个比基特 签名范围为-9223372036854775808到9223372036854775807 无符号范围为0到18446744073709551615 这就足够了:)还有一个BIGINT 签名范围为-9223372036854775

对于Facebook这样的网站,它是使用
int
还是
varchar
?例如,就Facebook上的帖子数量而言,有几十亿或几万亿条。那么,您是对每个帖子id使用
int
,还是使用
varchar
?int的最大值是2147483647,所以我很困惑。请帮忙,谢谢。

还有一个比基特

签名范围为-9223372036854775808到9223372036854775807

无符号范围为0到18446744073709551615

这就足够了:)

还有一个BIGINT

签名范围为-9223372036854775808到9223372036854775807

无符号范围为0到18446744073709551615


这就足够了:)

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

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

您询问了用户id。我咨询了一个站点,该站点的签名32位INT用户id的值已用完。原因是由于一个bug,他们为创建的每个新用户跳过了1000个或更多的值。因此,与每次递增用户ID 1相比,它们耗尽值的速度要快得多

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


另请参见我对的回答。

正如@Sammitch提到的,UUID可以生成比32位int大得多的长值。UUID生成128位值

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

您询问了用户id。我咨询了一个站点,该站点的签名32位INT用户id的值已用完。原因是由于一个bug,他们为创建的每个新用户跳过了1000个或更多的值。因此,与每次递增用户ID 1相比,它们耗尽值的速度要快得多

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


另请参见我对的回答。

BIGINT
可以处理18446744073709551615值,但序列生成[例如:自动增量]是并行化的一大障碍,因此它们很可能使用UUID或类似的东西。@Sammitch抱歉,你是什么意思?我真的不明白我的话:“…在MySQL中,BigInt的最大值是18446744073709551615。因此,如果你每秒插入1亿行,你需要5849年才能用完数字。”@Fred ii-感谢你的平静+1.喜欢这个例子!!!欢迎是的,它非常简洁。
BIGINT
可以处理18446744073709551615个值,但是序列生成[例如:自动增量]是并行化的一大障碍,所以它们很可能使用UUID或类似的东西。@Sammitch抱歉,你是什么意思?我真的不明白我的话:“…在MySQL中,BigInt的最大值是18446744073709551615。因此,如果你每秒插入1亿行,你需要5849年才能用完数字。”@Fred ii-感谢你的平静+1.喜欢这个例子!!!欢迎是的,它很整洁。用户id呢?你认为它可以是
int
?@JasonBale只在一段时间内。或者稍后你们可以通过PSY江南风格的视频剪辑了解情况。谷歌表示,他们从未想过任何视频都能获得如此多的浏览量。那么用户id呢?你认为它可以是
int
?@JasonBale只在一段时间内。或者稍后你们可以通过PSY江南风格的视频剪辑了解情况。谷歌表示,他们从未想过任何视频都能获得如此多的浏览量。这是一个完美的解释。感谢现实世界的例子+这是一个完美的解释。感谢现实世界的例子+1.