用于大型表的MySQL主键列类型

时间:2009-05-03 09:13:00

标签: mysql database database-design schema

我正在使用相对较大的数据库表( 700K行)处理该项目。

错误,我在设计数据库架构时做了。 当行增加时,我不得不增加ID的列类型bigint( x )。

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

请帮我解决问题。

我可以设置哪种列类型并忘记此问题?

在数据库架构设计领域我应该学到什么?

2 个答案:

答案 0 :(得分:14)

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

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

无符号INT将存储最多4,294,967,295 未签名的BIGINT将存储多达18,446,744,073,709,551,615 - 您很快就不会填写。

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

答案 1 :(得分:1)

我认为默认情况下任何主键都是无符号的。在任何情况下,对主键使用负数都是最好的,并打破了东西。