前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“

一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“

作者头像
Tom弹架构
发布2022-09-22 11:36:58
2080
发布2022-09-22 11:36:58
举报
文章被收录于专栏:Tom弹架构

一个5年工作经验的小伙伴,在面试的时候被这样一个问题。说”存储MD5值应该用VARCHAR还是用CHAR“,他一时间不只如何选择,感觉用VARCHAR也可以,用CHAR也行。希望我来帮忙分析一下。

另外,我花了很长时间,准备了一份500页的PDF面试资料文档和一份10W字的Java总结面试题和答案,

1、两者区别

要回答好这个问题,得了解清楚CHAR和VARCHAR的区别:

ENTER TITLE

第1,存储长度不同

CHAR类型的长度是固定的,VARCHAR的长度是可变的。

ENTER TITLE

假设,当我们当定义CHAR(10),输入的值是"abc",但是它占用的空间一样是10个字节,会包含7个空字节。当输入的字符长度超过指定的数时,CHAR会截取超出的字符。而且,当存储为CHAR的时候,MySQL会自动删除输入字符串末尾的空格。

ENTER TITLE

所以,CHAR非常适合存储很短的、固定长度的字符串。

VARCHAR类型用于存储可变长度且非Unicode的字符数据。但可变长度必须在1和8000之间的数值。

ENTER TITLE

比如VARCHAR(10),然后输入abc三个字符,那么实际存储大小为3个字节。

ENTER TITLE

除此之外,VARCHAR还会保留1个或2个额外的字节来记录字符串的实际长度。如果定义的最大长度小于等于255个字节,那么,就会预留1个字节;如果定义的最大长度大于255个字节,那么就会预留2个字节。

ENTER TITLE

第2,存储效率不同

ENTER TITLE

CHAR类型每次修改后的数据长度不变,效率更高。而VARCHAR每次修改的数据要更新数据长度,效率更低。

ENTER TITLE

第3,存储空间不同

ENTER TITLE

CHAR存储空间是初始的预计长度字符串再加上一个记录字符串长度的字节,可能会存在多余的空间。而VARCHAR存储空间的时候是实际字符串再加上一个记录字符串长度的字节,占用空间较小。

2、答案分析

根据以上的分析,CHAR非常适合存储MD5值。因为MD5是一个定长的值,对于固定长度的非常短的列,CHAR比VARCHAR效率也更高。

最后,我把之前分享的视频全部整理成了文字。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom弹架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档