一、CHAR和VARCHAR类型类似,都是用来存储字符串,但是它们保存和检索的方式不同。最主要的不同在于,CHAR属于固定长度的字符类型,而VARCHAR属于可变长度的字符类型。
二、CHAR的优缺点:
1、优点:由于CHAR是固定长度的,所以它的处理速度比VARCHAR快得多;
2、缺点:也是由于CHAR是固定长度的,所以浪费存储空间,而且大多程序中不需要空格,所以程序中需要对空格进行处理,同样需要时间。
3、应用场地:对于那些长度变化不大并且对查询速度有较高要求的数据可以考虑使用CHAR类型来存储。
三、不同的存储引擎对CHAR和VARCHAR的使用原则:
1、MyISAM存储引擎,建议使用固定长度的数据列代替可变长度的数据列,配合MyISAM的高速度,固定长度类型会使之更快、更强。
2、MEMORY存储引擎:目前都是用固定长度的数据行存储,因此无论使用使用CHAR还是VARCHAR,对列都没有影响。两者都是作为CHAR类型处理。
3、InnoDB存储引擎:建议使用VARCHAR类型。对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度的VARCHAR列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多余VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。