# MySQL之char和vachar的区别

char和varchar都是存储字符串的,但他们保持和检索的方式不同。 char属于固定长度的字符类型,而varchar是属于可变长度的字符类型。 由于char是固定长度的,所以他的处理速度比varchar会快很多,但缺点是浪费存储空间。 读取char类型数据的时候,如果尾部有空格,会丢失空格。 对于长度变化不大的并且对查询速度有比较高要的数据,可以考虑使用char类型来存储。

# 不同存储引擎,对char与varchar的使用也有所不同

  • MyISAM存储引擎:建议使用固定长度的数据列代替可变长度的数据列。
  • MEMORY存储引擎:两者都是作为CHAR类型处理,也就是说无论使用CHAR或VARCHAR都没关系,最终都是使用固定长度的数据行存储。
  • InnoDB存储引擎:建议使用VARCHAR类型。InnoDB主要性能因素是数据行使用的存储总量。由于CHAR平均占用空间多于VARCHAR,因此VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O比较好。