如果我声明了一堆并非总是必需的字段,是为每个创建的记录分配的内存,还是在初始化字段之前不分配内存?
示例:如果我声明一个带有id字段和char(8)字段的表,则每次生成id并将其输入表中时,是为字符串分配的内存,还是仅在分配了字符串时才分配内存值?
答案 0 :(得分:2)
简短回答:每次都需要记忆(或硬空间)。
如果字段是char(8),它将总是分配8个字节(加上数据库标题的前2个字节)。如果它是一个空的varchar(34),它将占用的最小空间为2.
答案 1 :(得分:2)
数据库将为类型大小不变的字段分配设置内存,例如数字字段和char(n)
。但是对于类型varchar(n)
(可变长度)的字段,它们将与它们中包含的数据一样大。
在您的示例中,字段类型char(8)
将为所有8个字符分配内存。如果你让字段类型为varchar(或nvarchar),那么它只会分配给它分配的空间。
可以阅读有关mysql字符串类型here的更多信息。