从底层存储结构上讲:Char每次占用的空间都为定长,而Varchar只会占用数据的实际空间,但是Varchar会额外使用一个或两个字节来表示数据的长度,但是由于Varchar的数据长度的不确定性,可能更新了一个大的数据,导致这页放不下,造成页分裂,也可能造成页内的碎片化
从使用的角度看:Varchar不会丢弃数据右边的空格,而Char会自动丢弃数据右边的空格,
例如同一个数据:“a “, 在Varchar里面查询出来的结果是”a “,而使用char存储查询出来的结果是:“a”
参考资料:《高性能MySQL》第三版