大型表的MySQL主键列类型

8

我正在处理一个相对较大的数据库表格项目(70万行)。

在设计数据库模式时,我犯了一个错误。 随着行数的增加,我不得不增加ID列的类型为bigint(x)。

现在它是bigint(44)。 我担心设置高x值会显著降低性能。也许我错了。

请帮我解决这个问题。

有哪种列类型可以一次设置并忘记这个问题?

在数据库模式设计领域,我应该学习什么更好?

2个回答

15

当你创建一个列时,如BIGINT(44)中的“44”是显示宽度——它不影响您可以存储的值的范围或检索这些值的速度。

对于自增ID,您应该使用无符号数字,例如BIGINT(44) UNSIGNED。这将使值范围翻倍,并添加额外的约束条件,通常是一个好事情。

无符号的INT最多可存储:

4,294,967,295

无符号的BIGINT最多可存储:

18,446,744,073,709,551,615

你不会很快填满它。

如果您的最大ID增长速度不快,那么您应该坚持使用UNSIGNED INT,因为它占用更少的空间。


1

我认为任何主键默认情况下都是无符号的。无论如何,使用负数作为主键最多也只能说不受欢迎,并且会导致问题。


请问您能否更具体一些?“破坏东西”这个说法太笼统了。它具体会破坏什么呢? - Nobody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接