如果我声明了一堆并不总是必需的字段,是为创建的每条记录分配内存,还是在初始化字段之前不分配内存?
例如:如果我声明了一个带有id字段和char(8)字段的表,是在每次生成id并将其输入到表中时为字符串分配内存,还是仅在为字符串赋值时才分配内存?
发布于 2011-10-28 03:10:00
数据库将为类型大小不变的字段分配一组内存,如数字字段和char(n)。例如,对于varchar(n) (可变长度)类型的字段,它们将与其中包含的数据一样大。
在您的示例中,字段类型为char(8)将为所有8个字符分配内存。如果您将字段类型设置为varchar (或nvarchar),那么它将只分配分配给它的空间。
可以阅读更多关于mysql字符串类型here的内容。
发布于 2011-10-28 03:09:38
简而言之:它每次都会占用内存(或硬盘空间)。
如果字段是char(8),它将始终分配8个字节(加上用于数据库标题的前导2个字节)。如果它是一个空的varchar(34),那么它将占用的最小空间是2。
https://stackoverflow.com/questions/7920984
复制相似问题