数据库存储问题

举例来说:建立了一个表,字段A,B,字段A是不可为空的,B可以空插入一条记录insertintotable(A,B)value(2,"str")和insertintota... 举例来说:建立了一个表,字段A,B,字段A是不可为空的,B可以空
插入一条记录
insert into table(A,B) value(2,"str")

insert into table(A) value(2)
上述两条记录占用的物理空间是不是一样的?
如果允许空(且实际中也通常是空的)的字段有10多个,要不要把这些字段独立出做一个表。我关注速度和存储效率。
我说的是mysql
展开
 我来答
阳光上的桥
2011-04-22 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
对于固定表,每个字段占用的空间是固定的,对于整数类型的字段,无论数值是多大、多小占用字节数都相同,对于字符串字段,无论长度多长、多短占用的字节数都相同,长度超过字段定义宽度的部分无法存储,长度低于字段定义宽度的部分浪费。

对于动态表,里面字符串类型字段的长度会影响占用物理空间的大小,超过定义长度的仍然无法存储,但是存储内容低于定义最大长度的能节省空间。

一般情况下,只要表有一个字段是变成字符串类型(VARCHAR),那么这个表就是动态表,所有的字符串类型(CHAR)字段实际上都是变长的。相反,如果没有任何一个VARCHAR字段,那么这个表就是固定的。

对于动态表,可以节省存储空间,但是速度会变慢,道理很简单,特别是修改一个记录长度发生变化的时候,系统要做许多事情。

以上的动态和固定,都只针对字符串类型,如果你的表都是存储整数,那么肯定是固定的。无论存储的整数多大、多小,占用的空间都是一样的。

另外,对于允许为空的字段,该字段占用的空间要多一点,该类字段的物理存储中要多一个记录内容是否为空的地方。但是,对于允许为空的字段,如果是固定表、或者动态表的非字符串类型字段,其占用的空间是固定的,只有在动态表的字符串类型字段里面,为空的字符串要比有内容的字符串少占用空间。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式