MYSQL的CHAR和VARCHAR的差异主要体现在:存储方式、查询效率、适用场景
存储方式
- CHAR类型的字符串是定长字符串,当定义了一个CHAR(n)类型的字段时,无论实际存储的字符串长度是多少,都会占用n个字符的存储空间,如果存储的字符串长度不足n个字符,则会用空格补齐;
- VARCHAR类型的字符串是变长字符串,它只占用实际存储字符串所需的空间,不会浪费空间。
查询效率
由于CHAR类型的字符串是定长字符串,因此在对它们进行查询、排序等操作时,效率要高于VARCHAR类型的字符串,因为它们在存储时就已经预留了固定的空间,可以更快速地定位数据。而VARCHAR类型的字符串则需要先扫描整个字符串,再进行相关操作,效率相对较低。
适用场景
- CHAR类型因为长度固定,适合长度固定的内容,例如:uuid之类的一些字符串标识
- VARCHAR类型因为暂用空间小,实际应用场景更广泛,在结合前缀索引也可以取得不错的查询效率。