先说结论,对于存储和计算来说,int(10)和int(11)没有区别,10代表数字长度,但是int类型占用4个字节,取值范围是-2147483648~2147483647,也就是最大长度是10,如果写成int(11), 插入11位数的时候是插入不进去的,mysql会默认int最大10位(2147483647),2147483648也将插入不了。所以int(1)和int(20)是没有区别的,但是写int(20)会认为对mysql字段类型理解不到位。但是TINYINT和INT区别就大了,TINYINT占用1个字节,也就是取值是-128~127。所以尽可能取占用空间小的整数类型。合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。
![](https://s1.51cto.com/images/blog/202002/06/e513e76775eee64bb1a98b877b344f20.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)