char
定长 最多255字符 末尾的空格会被默认删除
何时选用char类型储存?
1 数据长度近似 如手机号 身份证 MD5加密后的值
2 短字符串 相对varchar可以节约一个储存长度的空间
3 频繁更新的字段 相对于varchar不会产生长度变化也就不会产生存储碎片
varchar
varchar类型与char类型不同 为变长字符串
在字符长度不超过255时 使用一个字节存储长度
超过255时用两个字节存储长度
每行的varchar总和不得超过65535字节 如果想存储更长的字符串建议选用text格式
既然varchar是变长的 而且不超过255字符时都是用一个字节来存储长度 那么是不是意味着varchar(4) 与varchar(100) 在存储四个字符长度的内容 比如 "abcd"时是完全一样的呢?
mysql在查询时对于varchar字段在内存中是采用固定宽度而不是储存时的变长宽度 尤其是查询时创建的隐形临时表 所以在选择字段属性时还是适可而止 根据自己的业务来选择最合适的并且最小的长度 从而来提高查询速度 减少数据库服务器的开销
何时选用varchar列来储存?
1 字符串列最大长度比平均长度大很多的列 充分发挥变长的特点
2 字符串列较少被更新的列 因为innodb引擎一个存储页为16k 频繁的更新变长字段可能导致存储页的分裂 产生存储碎片
3 多字节字符集 如utf-8
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于mysql varchar类型的长度 - Python技术站