发布网友 发布时间:2022-04-26 18:42
共1个回答
热心网友 时间:2022-04-10 06:15
对于固定表,每个字段占用的空间是固定的,对于整数类型的字段,无论数值是多大、多小占用字节数都相同,对于字符串字段,无论长度多长、多短占用的字节数都相同,长度超过字段定义宽度的部分无法存储,长度低于字段定义宽度的部分浪费。
对于动态表,里面字符串类型字段的长度会影响占用物理空间的大小,超过定义长度的仍然无法存储,但是存储内容低于定义最大长度的能节省空间。
一般情况下,只要表有一个字段是变成字符串类型(VARCHAR),那么这个表就是动态表,所有的字符串类型(CHAR)字段实际上都是变长的。相反,如果没有任何一个VARCHAR字段,那么这个表就是固定的。
对于动态表,可以节省存储空间,但是速度会变慢,道理很简单,特别是修改一个记录长度发生变化的时候,系统要做许多事情。
以上的动态和固定,都只针对字符串类型,如果你的表都是存储整数,那么肯定是固定的。无论存储的整数多大、多小,占用的空间都是一样的。
另外,对于允许为空的字段,该字段占用的空间要多一点,该类字段的物理存储中要多一个记录内容是否为空的地方。但是,对于允许为空的字段,如果是固定表、或者动态表的非字符串类型字段,其占用的空间是固定的,只有在动态表的字符串类型字段里面,为空的字符串要比有内容的字符串少占用空间。