【发布时间】:2015-09-16 16:37:37
【问题描述】:
我有一个名为 user_id 的表列。每当有新用户注册时,它就会自动递增。
我认为将列的长度/值设置为其最大长度 (4294967295) 可以防止爆炸性用户注册会用完长度/值。
我担心如果我这样做了,列中未使用的长度可能会花费数据库中的位/存储,这会减慢处理时间。会是这样吗?
【问题讨论】:
标签: mysql sql database datalength
我有一个名为 user_id 的表列。每当有新用户注册时,它就会自动递增。
我认为将列的长度/值设置为其最大长度 (4294967295) 可以防止爆炸性用户注册会用完长度/值。
我担心如果我这样做了,列中未使用的长度可能会花费数据库中的位/存储,这会减慢处理时间。会是这样吗?
【问题讨论】:
标签: mysql sql database datalength
99.999% 的时间,一个简单的 INT 将完成类似 user_id 的工作。没必要发疯。这允许 21 亿用户,或者换句话说,每天每秒有两个人注册,持续 34 年。
Twitter、Facebook、Google 和少数其他公司将需要一个 64 位整数来处理此类事情。我们其他人都很好。
不要忘记INT 的存储成本是 4 字节,无论精度设置如何。对于 64 位数字,它是 8 个字节。这里的差异不是很大,但就指数性能而言,INT 的表现将比BIGINT 小但有意义,所以除了最极端的情况外,全面使用BIGINT 是矫枉过正的。
简短回答:别担心。使用INT。
【讨论】: