在MySQL中,varchar和char都可以用来存储字符串。
从语义上看,varchar是变长的(Variable-length),char是定长的(Fixed-length)。
本文基于MySQL 5.7版本,从varchar和char的语义,到存储引擎底层存储机制,探讨它们在存储空间占用、查询性能上的区别。
测试环境
- MySQL 5.7.36 版本
- 存储引擎: Innodb
- 行格式(Row format):DYNAMIC
Innodb存储引擎支持多种行格式(REDUNDANT、COMPACT、DYNAMIC、COMPRESSED),不同行格式存储方式存在差异。本文基于默认行格式DYNAMIC。
默认行格式可以通过innodb_default_row_format
变量查看: