我有一个名为user_id的表列。当一个新用户注册时,它自动递增。
我认为将列的长度/值设置为最大长度(4294967295)可以防止爆炸性用户注册,这会耗尽长度/值。
我担心如果我这样做,列中未使用的长度可能会在数据库中花费比特/存储空间,这会减慢处理时间。情况会是这样吗?
99.999%的情况下,一个简单的INT
可以完成user_id
这样的工作。没必要这么疯狂。这允许21亿用户,换句话说,每天每秒都有两个人注册,持续34年。
Twitter、Facebook、Google和其他一些网站将需要64位整数来处理这样的事情。我们其他人都很好。
不要忘记,无论精度设置如何,INT
的存储成本都是4字节。对于64位数字,它是8字节。这里的差异不是很大,但就索引性能而言,INT
将比BIGINT
表现得好一点,但这是有意义的,所以除了最极端的情况外,在所有情况下都采用BIGINT
是多余的。
INT