大家好,欢迎来到IT知识分享网。
昨天一个工作4年的粉丝,遇到了一个很有意思的面试题。
“存储MD5的值应该用VARCHAR还是CHAR”!
觉得是用VARCHAR类型的小伙伴,请仔细看完这篇文章。
大家好,我是Mic,一个工作14年的Java程序员。
这道面试题的文字版我已经整理在20万字的文档里了吗,有需要的可以Si信我发“Mic”领取
考察目的
这个问题考察1~4年左右开发经验的同学。
大家肯定会觉得这个问题很简单啊,直接回答VARCHAR就行了。
但如果只是这么简单,你就太单纯了。
这个问题考察的目的至少有两个:
- 考察数据库里面的基本数据类型的理解
- 基于这个问题作为切入口,了解求职者对数据库的掌握程度
这个问题后面,一定伴随这“为什么”,
面试官一定是不不不去挖坑,让你往里面跳,直到你回答不上来位置。
所以我们在回答这个问题的时候,就需要更加全面的去回答。
问题分析
MD5是由数字和字母组成的一个16位或者32位长度的字符串,一般在应用开发中都是使用32位。
看起来,我们用varchar(32)或者char(32)都可以存储,那用哪种更好呢?
要回答这个问题,必须要了解这两个类型的功能特性和区别。
- 第一个,char是一个固定长度的字符串,Varchar是一个可变长度的字符串
假设声明一个char(10)的长度,如果存储字符串“abc”,虽然实际字符长度只有3,但是char还是会占10个字节长度。
同样,如果用varchar存储,那它只会使用3个字符的实际长度来存储。 - 第二个,存储的效率不同,char类型每次修改以后存储空间的长度不变,所以效率更高
varchar每次修改数据都需要更新存储空间长度,效率较低 - 第三个,存储空间不同,char不管实际数据大小,存储空间是固定的,而varchar存储空间等于实际数据长度,所以varchar实际存储空间的使用要比char更小
基于他们特性的分析,可以得出一个基本的结论:
- char适合存储比较短的且是固定长度的字符串
- varchar适合存储可变长度的字符串
高手:
我认为应该使用Char类型,原因是:
char类型是固定长度的字符串,varchar是可变长度字符串。
而MD5是一个固定长度的字符,不管数据怎么修改,长度不变,这个点很符合char类型。
另外,由于是固定长度,所以在数据变更的时候,不需要去调整存储空间大小,在效率上会比varchar好。
需要高手面试文档合集(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以后台私信【Mic】或者评论区留言。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/108342.html