2011-08-24 68 views

回答

47

东西可能只是为您转换为int(11)。由于int中不能包含255个可见数字,因此最大值将为2147483647

如果您需要更多,可以将其设置为无符号, since I'm assuming you have no negative ids and then you can have up to 4294967295`。

如果您曾经将有超过4十亿条记录(如果你是100万,现在不太可能),那么你可以使用一个bigint,它可让您以低成本存储人数达到18446744073709551615当然更多的存储空间。

+0

这意味着,我255型是没用的? – DNB5brims

+4

是的,没有整数将显示为255个字符。最长的是(11),这对于'-'符号和10位数是足够的。如果你使用的是unisigned int,那么你可以将它设置为int(10) – Paulpro

5

如果没有发现,则从0到4 294 967 295,这样就不会太过分了。

更多信息in mysql docs

+0

ID的通常是未签名的...所以... – Deele

+0

@Deele:在文档状态INTEGER默认情况下签署的(*您链接到*的那些)和未签名是可选的(非标) – gbn

+3

@gbn,您是否觉得我的答案中的前两个单词很难阅读? – Deele

8

-2147483648到2147483647具体根据docs为有符号的32位整数值

的255是简单地显示宽度,并且不影响值

6

INTmysql使用4字节存储的范围,范围从-2147483648到2147483647。如果使用无符号整数,范围是0到4294967295

2

请参阅this blog

SELECT ~0 as max_bigint_unsigned 
,  ~0 >> 32 AS max_int_unsigned 
,  ~0 >> 40 AS max_mediumint_unsigned 
,  ~0 >> 48 AS max_smallint_unsigned 
,  ~0 >> 56 AS max_tinyint_unsigned 
,  ~0 >> 1 AS max_bigint_signed 
,  ~0 >> 33 AS max_int_signed 
,  ~0 >> 41 AS max_mediumint_signed 
,  ~0 >> 49 AS max_smallint_signed 
,  ~0 >> 57 AS max_tinyint_signed 
\G 

*************************** 1. row *************************** 
    max_bigint_unsigned: 18446744073709551615 
     max_int_unsigned: 4294967295 
max_mediumint_unsigned: 16777215 
max_smallint_unsigned: 65535 
    max_tinyint_unsigned: 255 
    max_bigint_signed: 9223372036854775807 
     max_int_signed: 2147483647 
    max_mediumint_signed: 8388607 
    max_smallint_signed: 32767 
    max_tinyint_signed: 127 
1 row in set (0.00 sec)