mysql char varchar 区别

数据库建表  字符串字段类型的选择

char与varchar的区别:

           char      长度固定,char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将

                       被去掉)

           varchar  长度可变,在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

           比如char(255)和varchar(255)存储字符串"hello world"

           char会用一块255的空间放那个11个字符

           varchar就不会用255个,他先计算长度后只用11个再加上计算的到字符串长度信息,一般1-2个byte来,这样varchar在存储不确定长度的时候会大大减少存储空间。 

注明:在用char字符类型时内容后面有空间时必须作相关处理,要不就会把空格自动删除。

建议:

   根据字符的长度来判断,是考虑其长度的是否相近来确定选择char还是varchar,如何字段的长度基本都是一样或者其长度总是近似的可以选用char

   是从碎片角度进行考虑用可变长度的字符型数据时,数据库管理员要时不时的对碎片进行整理。如执行数据库导出导入作业,来消除碎片。

   即使使用Varchar数据类型,也不能够太过于慷慨!比如你只使用到90个字符,VARCHAR(100)与VARCHAR(200)真的相同吗?结果是否定的。虽然他们用来存储90个字符的数据,其存      储空间相同。但是对于内存的消耗是不同的。

   myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。 

   memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系, 

   innodb 存储引擎 建意使用varchar 类型 

原文地址:https://www.cnblogs.com/lijiageng/p/5660887.html