MySQL 中 varchar 和 char 有什么区别?
|
freeflydom
2025年5月16日 9:52
本文热度 68
|
核心区别
CHAR和VARCHAR是MySQL中两种主要的字符串类型,它们最本质的区别在于:
- CHAR是固定长度的字符串类型
- VARCHAR是可变长度的字符串类型
详细对比
特性 | CHAR | VARCHAR |
---|
存储方式 | 固定长度,不足部分用空格填充 | 可变长度,按实际内容存储 |
存储空间 | 始终占用定义的长度空间 | 只占用实际需要的空间+1-2字节长度信息 |
性能 | 读取略快(无需计算长度) | 需要额外处理长度信息 |
适用场景 | 长度固定或很短的字符串(如MD5、UUID) | 长度变化或较长的字符串 |
补充说明
CHAR的填充机制:当存储的字符串短于定义长度时,MySQL会自动用空格填充;检索时这些填充的空格会被移除(InnoDB引擎会忽略末尾空格)
VARCHAR的长度信息:
- 字符串≤255字符:使用1字节存储长度
- 字符串>255字符:使用2字节存储长度
实际应用建议:
- 对于固定长度的数据(如国家代码、MD5哈希等),使用CHAR更合适
- 对于大多数变长字符串,使用VARCHAR更节省空间
- 现代MySQL版本中,两者的性能差异已经很小,空间效率通常更重要
存储引擎差异:
- MyISAM引擎:固定长度的行(使用CHAR)性能更好
- InnoDB引擎:可变长度行(VARCHAR)通常更高效
该文章在 2025/5/16 10:19:33 编辑过