char 和 varchar 的区别
char 和 varchar 的区别
char的长度是固定的,varchar的长度的可变的,会多一个字节存储长度;
char的效率比varchar的效率高;
char占用空间比varchar大,char在插入时需要使用trim(插入a ,查询出来为a);
当你使用varchar时,如果用了modify column去把列修改成char,会产生内存碎片空间
为varchar(2)时,存入比2个字符以上的数据时,会出现两种情况
①sql mode为严格模式时,插入2个字符以上的数据就会报错
②sql mode为非严格模式时,MySql会自动将超出的字符截取,保留符合的字符
mysql严格模式
https://www.cnblogs.com/lb0325/p/15123680.html
varchar会有内存碎片问题(比如把200长度更新为50),如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下InnoDB需要分裂页来使行可以放进页内,这样会增加碎片。内存碎片容易造成空间浪费和磁盘IO读写性能下降,因为数据更加随机分散。

浙公网安备 33010602011771号