想知道这两种数据类型将占用多少实际存储空间,因为 MySQL 文档对此事有些不清楚。
CHAR(M) M × w 字节,0 <= M <= 255,其中 w 是字符集中最大长度字符所需的字节数
VARCHAR(M), VARBINARY(M) 如果列值需要 0 – 255 个字节,则为 L + 1 个字节,如果值可能需要超过 255 个字节,则为 L + 2 个字节
这对我来说似乎意味着,给定一个 utf8 编码的数据库,一个 CHAR 将始终占用每个字符 32 位,而 VARCHAR 将占用 8 到 32 位,具体取决于所存储字符的实际字节长度。那是对的吗?或者 VARCHAR 是否意味着 8 位字符宽度,并且存储多字节 UTF8 字符实际上会消耗 VARCHAR 中的多个“字符”?或者 VARCHAR 是否也总是每个字符存储 32 位?这么多的可能性。
我以前不必担心这么多,但我开始达到内存临时表大小限制,我不一定要增加 MySQL 的可用池(第二次)。