char 与 varchar都是数据库存储字符串的存储类型
区别:
- char是固定长度存储方式,实际存储长度没达到设定长度时会填充空格。最大存储长度只有255
- varchar是变长存储,只制定最大存储长度,实际长度按照实际字符长度来。最大存储长度为65535(5.0.3以前为255)
- varchar数据更新时,如果新存储的数据长度变大,会采用分页或者拆分的方式。实际对性能也没有影响,innodb采用页管理数据,数据移动是现在内存完成再写到磁盘,因此数据移动很快
mysql innodb数据库性能实践 - 查找char数据也没有比varchar数据速度更快,上面的实验也验证了两者性能没有差别,
char vs varchar
FALSE: a char is just a varchar2 blank padded - we do not store strings "at a specified position from each other". We do search for the end of the string - we use a leading byte length to figure things out.
使用总结
-
一般优先使用varchar,不耗费存储空间,一些特殊情况下可以使用char
-
当字符串长度固定时。使用char。例如存储MD5哈希值,或者uuid,使用char
-
当字符串长度较小。例如只有10个以内的字符
网友评论