mysql中将字符串设为可变长度的类型有什么缺点?
天蓬老师
天蓬老师 2017-04-17 14:00:43
[MySQL讨论组]
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
迷茫

鉴于@papersnake君说了空间和效率上,我再啰嗦一下。
首先从字节上来说CHAR是定长,意思就是只要输入在我这个定长以下,不管是几个字符,它的实际占用空间都是CHAR定长的长度。而VARCHAR则相对来说会节省一点空间,比如:你VARCHAR的长度设为10,那么你只存储了两个字符长度,那么最终占用的空间也就是两个字符长度

还有一点就是关于用途:VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,这会造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。比如:存储用户密码MD5或者serialize加密之后的长度为32或者16,密码字段的类型就可以设置为CHAR定长32或者16

迷茫

题目就有问题:
固定长度的char ,varchar是不固定的,只是根据你设置的长度做最大上限做限制。text也一样,只是比较大,一般达不到上限。

char ,varchar达不到很大的数据量级别以及数据响应时,基本是无差别的。char固定长度,但是这类设计很少了,比如IP.一般常用varchar能减少表结构变动带来的问题。text是特殊处理,不推荐用。

巴扎黑

VARCHAR比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’

大家讲道理

可变长度找索引要找两次,速度会减慢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号