为了账号安全,请及时绑定邮箱和手机立即绑定

多表更新之后,给数据表瘦身要更改原数据表字段的类型由VARCHAR(40)改变为SAMLLINT的问题。

在课件中老师提到为了给数据表瘦身,最后要更改字段类型,此时又涉及不同类型占用字节大小的问题, 又点不太理解(关于占用字节大小那一章的字符型的不是很理解)。

我觉得对于存储数字来说,VARCHAR(数字多长就占多大呗)跟SMALINT占用的空间不一样大吗?要是不一样大多少呢?

 

正在回答

2 回答

字符型和数值型,占用的字节不一样。

SAMLLINT无符号的话,数据区间是0-65535,最多占用2个字节。

而VARCHAR(M)类型的话,你里面看着是输入数字,但是其实是字符串,所以这个“数字”多少位就占用多少字节。比如填写进去“6553”的话,那就是4个字节。

至于为什么SAMLLINT最多占用是2个字节呢,这个涉及到二进制。

1个字节占用8个二进制位,那么 2个字节占用16个二进制位。

在二进制里面,只有0和1,所以16个二进制位的话最大的值就是16个1,换算成十进制等于65535。

1 回复 有任何疑惑可以回复我~

VARCHAR和SMALLINT指的都是申请时的内存大小,只会比实际变量占用的大,所以就会产生内存浪费。

而将VARCHAR(40)改变为SAMLLINT就能一定程度上减少这种内存浪费。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

多表更新之后,给数据表瘦身要更改原数据表字段的类型由VARCHAR(40)改变为SAMLLINT的问题。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信