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读写性能下降,因为数据更加随机分散。

 

posted @ 2023-02-09 17:08  sugarstar  阅读(82)  评论(0)    收藏  举报