要回答您的问题:是的,它的性能会降低。显然,类型越大,表越大,查询就越慢(I /
O越多,索引越大,访问时间越长,结果适合各种缓存的可能性越小等等)。因此,根据经验:始终使用适合您所需的 最小类型 。
话虽如此, 性能并不重要
。为什么?因为当到达溢出INT的地步时,BIGINT是唯一的解决方案,您将不得不接受它。同样在这一点上(考虑到您正在使用自动增量PK,您将超过40
亿 行),您将遇到更大的性能问题,并且与INT相比,BIGINT的开销将是您所关注的最少。
因此,请考虑以下几点:
- 如果不需要负值,请使用UNSIGNED,这将使限制加倍。
- UNSIGNED INT最大值是4.294.967.295。如果您使用的是自动递增PK,而 您只有300.000个条目,那么您真的不必担心 。您现在甚至可以使用MEDIUMINT,除非您打算真正快速地增长。(请参阅http://dev.mysql.com/doc/refman/5.1/en/integer-types.html)
- 类型后面括号中的数字 不会影响 类型 的最大值 。INT(7)与INT(8)或INT(32)相同。如果您指定ZEROFILL,则用于指示显示宽度(请参见http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html)



