大型表的MySQL主键列类型

大型表的MySQL主键列类型,mysql,database,database-design,schema,Mysql,Database,Database Design,Schema,我正在处理相对较大的DB表(700K行)的项目 错误,我在设计DB模式时犯了错误。 当行数增加时,我必须增加ID的列类型bigint(x) 现在是bigint(44)。 我害怕设置高x值,因为我认为它会显著降低性能。也许我错了 请帮我解决这个问题 我可以设置一次什么列类型而忽略此问题 在数据库模式设计领域,我应该更好地学习什么?当您创建一个列作为BIGINT(44)时,“44”是显示宽度-它不会影响您可以存储的值的范围或检索它们的速度 对于自动递增ID,您希望使用无符号数字,例如BIGINT(4

我正在处理相对较大的DB表(700K行)的项目

错误,我在设计DB模式时犯了错误。 当行数增加时,我必须增加ID的列类型bigint(x)

现在是bigint(44)。 我害怕设置高x值,因为我认为它会显著降低性能。也许我错了

请帮我解决这个问题

我可以设置一次什么列类型而忽略此问题


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

当您创建一个列作为
BIGINT(44)
时,“44”是显示宽度-它不会影响您可以存储的值的范围或检索它们的速度

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

无符号整数最多可存储:

4294967295

未签名的BIGINT最多可存储:

18446744073709551615

你不会很快填补这个空缺的


你不会说你的最大ID增长有多快-如果你没有插入很多行,那么你应该坚持使用
UNSIGNED INT
,因为它占用更少的空间。

我认为默认情况下任何主键都是未签名的。在任何情况下,使用负数作为主键都是不可取的,而且会破坏东西。

您能更具体一点吗?“打破东西”是相当模糊的。它到底断了什么?