我目前在我的MySQL数据库中有几个表,我将id
字段声明为SMALLINT(6)
类型(这是正确的,因为SMALLINT
只有65535 [长度为5] ])。我在整数类型下读过here,当它为UNSIGNED
时,范围会增加到65535.如果我专门将id
字段的属性更改为{{{{}},那将如何影响我的数据库1}?此外,从UNSIGNED
到SMALLINT
时会出现问题吗?
我的数据库类型是 MyISAM 。
答案 0 :(得分:1)
您应该可以从SMALLINT
切换到MEDIUMINT
- 不会丢失任何数据。
MySQL中的正常整数可以是下限和上限之间的任何数字。对于有符号整数,下限为负数,上限为正数。签名的SMALLINT
可以在-32768和32767之间。但是,无符号整数只是正数。下限为零,上限为65535。
我通常会使用INT
来获取ID。我宁愿将ID字段的上限设置得如此之高,以至于永远不会达到它。
答案 1 :(得分:0)
使用UNSIGNED
类型的主要问题是,如果你做任何导致负数的算术,你最终会得到一个大数字。但是,对于ID而言,这不太可能是一个问题,我经常使用它们来减少内存使用量。
我无法想到使用SMALLINT
然后更改为MEDIUMINT
会出现任何问题,因为扩大数据类型通常不会导致问题。