我正在使用相对较大的数据库表( 700K行)处理该项目。
错误,我在设计数据库架构时做了。 当行增加时,我不得不增加ID的列类型bigint( x )。
现在是bigint(44)。 我害怕设置高x值因为我认为它会显着降低性能。也许我错了..
请帮我解决问题。
我可以设置哪种列类型并忘记此问题?
在数据库架构设计领域我应该学到什么?
答案 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)
我认为默认情况下任何主键都是无符号的。在任何情况下,对主键使用负数都是最好的,并打破了东西。