在MySQL中,当只需要TEXT时,LONGTEXT会浪费空间吗?

6 mysql optimization sqldatatypes

我有一列,其数据类型是LONGTEXT. 而TEXT数据类型足以满足 95% 的值。我LONGTEXT只需要 5% 的值。

现在我想知道,在 中存储一个很小的值LONGTEXT会浪费很多空间吗?这是优化吗?

Evg*_*eny 6

让我们看一下 MySQL 文档。

\n\n
\n

TEXT[(M)] [字符集 charset_name] [COLLATE 排序规则_name]

\n\n

最大长度为 65,535 (2^16 \xe2\x88\x92 1) 个字符的 TEXT 列。\n 如果值包含多字节\n 字符,则有效最大长度会较小。每个 TEXT 值都使用 2 字节长度前缀存储,该前缀指示该值中的字节数。

\n\n

LONGTEXT [字符集 字符集名称] [COLLATE 排序规则名称]

\n\n

最大长度为 4,294,967,295 或 4GB (2^32 \xe2\x88\x92 1)\n 个字符的 TEXT 列。如果值包含多字节字符,则有效最大长度会较小。LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每个 LONGTEXT 值均使用 4 字节长度前缀存储,该前缀指示该值中的字节数。

\n\n

MEDIUMTEXT [字符集 字符集名称] [COLLATE 排序规则名称]

\n\n

最大长度为 16,777,215 (2^24 \xe2\x88\x92 1)\n 个字符的 TEXT 列。如果值包含多字节字符,则有效最大长度会较小。每个 MEDIUMTEXT 值都使用 3 字节\n 长度前缀来存储,该前缀指示该值中的字节数。

\n
\n\n

所以前缀的差别是 2 个字节。

\n