我正在处理具有相对较大数据库表(700K 行)的项目。
我在设计数据库模式时犯了一个错误。 当行增加时,我不得不增加 ID 的列类型 bigint(x)。
现在是 bigint(44)。 我害怕设置高 x 值,因为我认为它会显着降低性能。也许我错了..
请帮我解决这个问题。
我可以一次设置什么列类型而忘记这个问题?
在DB schema设计方面我应该学什么?
最佳答案
当您将列创建为 BIGINT(44)
时,“44”是显示宽度 - 它不会影响您可以存储的值的范围或检索它们的速度。
对于自动递增的 ID,您希望使用 UNSIGNED
数字,例如BIGINT(44) 无符号
。这将使值的范围加倍并添加额外的约束,这通常是一件好事。
一个无符号的 INT 将存储到:
4,294,967,295
未签名的 BIGINT 最多可存储:
18,446,744,073,709,551,615
你不会很快填满它。
您没有说您的最大 ID 增长的速度有多快 - 如果您没有插入很多行,那么您应该坚持使用 UNSIGNED INT
,因为它占用的空间更少。
关于大型表的 MySQL 主键列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816646/