我有一个名为user_id的表列。每当新用户注册时它自动递增。
我认为将列的长度/值设置为其最大长度(4294967295)可以防止爆炸性用户注册将耗尽长度/值。
我担心如果我这样做,列中未使用的长度可能会花费数据库中的位/存储空间,这将减慢处理时间。情况会是这样吗?
答案 0 :(得分:1)
99.999%的简单INT
将为user_id
这样的事做好工作。没有必要发疯。这允许21亿用户,或者换句话说,每天每秒钟注册两个人,为期34年。
请不要忘记INT
的存储成本是4个字节,无论精度设置如何。对于64位数字,它是8个字节。这里的差异不是很大,但就指数表现而言,INT
的表现会比BIGINT
小一些但有意义的数量,因此全面展开BIGINT
是过度的除了最极端的情况之外的所有情况。
简短回答:别担心。使用INT
。