MySQL中varchar与char的区别?
CHAR和VARCHAR最大的不同就是一个是固定长度,一个是可变长度。
CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充(并且如果存储的char类型的字符串后面有空格的话,innodb会忽略)。
VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
一般来说,CHAR比VARCHAR更快,因为CHAR是固定长度的,而VARCHAR需要增加一个长度标设,处理时需要多一次运算,但是有例外,参考:MySQL Innodb数据库性能实践——VARCHAR vs CHAR,但是如果使用的是Innodb引擎的话,推荐使用varchar代替 char。
特别是字符串的平均长度比最大长度要小很多的情况;当然,如果你的字符串本来就很短或者字符串长度固定,例如只有10个字符,那么就优先选CHAR了。
当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度。
如果int的值为10
int(11)显示结果为00000000010
int(3)显示结果为010
就是显示的长度不一样而已,但都是占用四个字节的空间。