首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL InnoDB DECIMAL -由列声明还是由实际数据驱动的数据大小?

MySQL InnoDB DECIMAL -由列声明还是由实际数据驱动的数据大小?
EN

Stack Overflow用户
提问于 2012-02-06 23:05:34
回答 2查看 506关注 0票数 1

我用的是MySQL,我所有的表都用的是InnoDB引擎。我有一些列声明为DECIMAL(38,0),它们被广泛使用。根据MySQL文档(http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html),38位数值需要17个字节(38 =4*9+ 2;4*4+1= 17)。好吧。

但是,这是否意味着存储在此列中的任何值都将占用17个字节?例如,对于值432 -是否只占用4个字节(我真的希望如此…)或者它会占用17个字节?

最后,我知道在Oracle中占用的大小取决于存储的实际值。但是它在MySQL中也是这样优化的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-06 23:11:31

我认为答案是,无论如何它都需要17个字节。如果您注意到了,在链接的手册页面中,DBMS没有办法记录该值有多“长”。相比之下,对于VARCHAR(255) CHARACTER SET ascii列,值的开头只有一个字节,表示值有多长(最大大小为256字节)。对于VARCHAR(1000) CHARACTER SET ascii列,有两个字节表示长度。这里没有详细记录该值的长度,这使我得出结论,该列总是占用最大的空间量。

票数 2
EN

Stack Overflow用户

发布于 2012-02-06 23:09:39

Decimal是“固定长度”,因此每个值需要17个字节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9162145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档