我有一个名为 user_id 的表列。每当新用户注册时,它就会自动递增。
我认为将列的长度/值设置为其最大长度(4294967295)可以防止爆炸性用户注册,从而耗尽长度/值。
我担心如果我这样做,列中未使用的长度可能会消耗数据库中的位/存储,这会减慢处理时间。会是这样吗?
最佳答案
99.999% 的情况下,简单的 INT
就能完成类似 user_id
之类的工作。没有必要发疯。这允许 21 亿用户,或者换句话说,每天每秒都有两个人注册,持续 34 年。
Twitter、Facebook、Google 和其他一些公司将需要 64 位整数来完成此类操作。我们其他人都很好。
不要忘记,无论精度设置如何,INT
的存储成本都是 4 个字节。对于 64 位数字来说,它是 8 个字节。这里的差异并不是什么大问题,但就索引性能而言,INT
的性能将比 BIGINT
好一点,但幅度很小,但很有意义,因此使用 BIGINT
除了最极端的情况外,code> 全面的杀伤力太大了。
简短回答:不用担心。使用INT
。
关于mysql - 单元格未使用的长度/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614151/