MySQL数据类型-CHAR与VARCHAR

作者: wxfeng 分类: 数据库 发布时间: 2017-04-20 00:00

CHAR 和VARCHAR 类型类似,都用来存储字符串,但它们保存和检索的方式不同。CHAR属于固定长度的字符类型,而VARCHAR 属于可变长度的字符类型。表8-1 显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR 之间的差别。
表8-1 CHAR 和VARCHAR 的对比

CHAR(4) 存储需求 VARCHAR(4) 存储需求
'' ' ' 4 个字节 '' 1 个字节
'ab' 'ab ' 4 个字节 'ab ' 3 个字节

在MySQL 中,不同的存储引擎对CHAR 和VARCHAR 的使用原则有所不同,这里简单概括如下。
MyISAM 存储引擎:建议使用固定长度的数据列代替可变长度的数据列。
MEMORY 存储引擎:目前都使用固定长度的数据行存储,因此无论使用CHAR 或VARCHAR 列都没有关系。两者都是作为CHAR 类型处理。
InnoDB 存储引擎:建议使用VARCHAR 类型。对于InnoDB 数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR 列不一定比使用可变长度VARCHAR 列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR 平均占用的空间多于VARCHAR,因此使用VARCHAR 来最小化需要处理的数据行的存储总量和磁盘I/O 是比较好的。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注