MySQL数据类型优化(字符串类型)

1.varchar

varchar用于存储可变长字符串,是最常见的数据类型。它比定长类型更省空间。有一冲情况例外,如果MySQL表使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,这会很浪费空间。
varchar会使用1或2个额外字节记录字符串的长度:如果列的最大长度<=255字节,则只使用1个字节表示,否则使用2个字节。
varchar节省了存储空间,所以对性能也有帮助。但是由于行是变长的,在update时可能使行变得比原来更长,这就导致需要做额外的工作。

如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下,不同的引擎处理方式是不一样的。例如MyISAM会将行拆成不同的片段存储,InnoDB则需要分裂页来使行可以放进页内。其他引擎还会有不同处理方式。

2.char

char类型是定长的:MySQL总是根据定义的字符串长度分配足够的空间。
char适合存储很短的字符串,或者所有值都接近一个长度,比如密码的MD5值。对于经常变更的数据,char也比varchar更好,因为定长的char类型不容易产生碎片。对于非常短的列,char比varchar在存储空间上也更有效率。
char会删除字符串末尾的空格(取决于存储引擎)。

你可能感兴趣的:(MySQL数据类型优化(字符串类型))