我正在处理一个相对较大的数据库表格项目(70万行)。
在设计数据库模式时,我犯了一个错误。 随着行数的增加,我不得不增加ID列的类型为bigint(x)。
现在它是bigint(44)。 我担心设置高x值会显著降低性能。也许我错了。
请帮我解决这个问题。
有哪种列类型可以一次设置并忘记这个问题?
在数据库模式设计领域,我应该学习什么更好?
我正在处理一个相对较大的数据库表格项目(70万行)。
在设计数据库模式时,我犯了一个错误。 随着行数的增加,我不得不增加ID列的类型为bigint(x)。
现在它是bigint(44)。 我担心设置高x值会显著降低性能。也许我错了。
请帮我解决这个问题。
有哪种列类型可以一次设置并忘记这个问题?
在数据库模式设计领域,我应该学习什么更好?
当你创建一个列时,如BIGINT(44)
中的“44”是显示宽度——它不影响您可以存储的值的范围或检索这些值的速度。
对于自增ID,您应该使用无符号数字,例如BIGINT(44) UNSIGNED
。这将使值范围翻倍,并添加额外的约束条件,通常是一个好事情。
无符号的INT最多可存储:
4,294,967,295
无符号的BIGINT最多可存储:
18,446,744,073,709,551,615
你不会很快填满它。
如果您的最大ID增长速度不快,那么您应该坚持使用UNSIGNED INT
,因为它占用更少的空间。
我认为任何主键默认情况下都是无符号的。无论如何,使用负数作为主键最多也只能说不受欢迎,并且会导致问题。