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

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

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

请帮我解决问题。

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

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

有帮助吗?

解决方案

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

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

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

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top