MySQL整数可以使用几种整数类型:tinyinit,smallinit,mediumint,int,bigint
他们分别使用8,16,24,32,64位存储空间。对应的值范围从-2的n-1次方到2的n-1次方减1
整数有可选属性unsigned(无符号),表示不允许负值,大致可以使正数上限提高一倍。这一属性只影响存储上限,对空间使用和性能没有影响。
整数计算一般使用64位的biginit正数,即使32为位环境也是如此。
MySQL可以为整数类型指定宽度,例如init(11),对于大多数应用没有意义,它不会限制只的合法范围,只是规定了一些交互工具来显示字符的个数。所以在实际使用中不推荐这样做。
整数在应用中,应根据实际需要来选择。一般原则是满足当前使用最大上限并为未来扩展预留必要的范围。
有一个案例,一个系统一直运行正常,某日突然用户无法发言。该系统负责人找到我帮忙,经检查原因是系统存储发言的表第一个字段为自增长整数类型int,因为用户太活跃,2年左右时间已经达到了32位存储上限,修改为biginit后系统正常了。从这个案例来看,正确评估系统的需要是非常重要的。
另外如果表中有作为标识的字段,建议受用整数,并且其他表如果有相关字段请使用相同的整数类型,这样在关联表的时候效率是比较高的。