一架梯子,一头程序猿,仰望星空!
MYSQL基础面试题 > 内容正文

MYSQL的CHAR和VARCHAR类型有什么区别?


问题简答

MYSQL的CHAR类型的字符串是定长字符串,长度固定,VARCHAR类型的字符串是变长字符串,长度跟实际存储字符串所需的空间有关,比较节省空间。

问题详解:

MYSQL的CHAR和VARCHAR的差异主要体现在:存储方式、查询效率、适用场景

存储方式

  • CHAR类型的字符串是定长字符串,当定义了一个CHAR(n)类型的字段时,无论实际存储的字符串长度是多少,都会占用n个字符的存储空间,如果存储的字符串长度不足n个字符,则会用空格补齐;
  • VARCHAR类型的字符串是变长字符串,它只占用实际存储字符串所需的空间,不会浪费空间。

查询效率

由于CHAR类型的字符串是定长字符串,因此在对它们进行查询、排序等操作时,效率要高于VARCHAR类型的字符串,因为它们在存储时就已经预留了固定的空间,可以更快速地定位数据。而VARCHAR类型的字符串则需要先扫描整个字符串,再进行相关操作,效率相对较低。

适用场景

  • CHAR类型因为长度固定,适合长度固定的内容,例如:uuid之类的一些字符串标识
  • VARCHAR类型因为暂用空间小,实际应用场景更广泛,在结合前缀索引也可以取得不错的查询效率。