具有SMALLINT id字段的MySQL数据库表

时间:2011-03-13 09:26:08

标签: mysql myisam sqldatatypes unsigned-integer

我目前在我的MySQL数据库中有几个表,我将id字段声明为SMALLINT(6)类型(这是正确的,因为SMALLINT只有65535 [长度为5] ])。我在整数类型下读过here,当它为UNSIGNED时,范围会增加到65535.如果我专门将id字段的属性更改为{{{{}},那将如何影响我的数据库1}?此外,从UNSIGNEDSMALLINT时会出现问题吗?

我的数据库类型是 MyISAM

2 个答案:

答案 0 :(得分:1)

您应该可以从SMALLINT切换到MEDIUMINT - 不会丢失任何数据。

MySQL中的正常整数可以是下限和上限之间的任何数字。对于有符号整数,下限为负数,上限为正数。签名的SMALLINT可以在-32768和32767之间。但是,无符号整数只是正数。下限为零,上限为65535。

我通常会使用INT来获取ID。我宁愿将ID字段的上限设置得如此之高,以至于永远不会达到它。

答案 1 :(得分:0)

使用UNSIGNED类型的主要问题是,如果你做任何导致负数的算术,你最终会得到一个大数字。但是,对于ID而言,这不太可能是一个问题,我经常使用它们来减少内存使用量。

我无法想到使用SMALLINT然后更改为MEDIUMINT会出现任何问题,因为扩大数据类型通常不会导致问题。