我有一个列,其数据类型为LONGTEXT
。虽然TEXT
数据类型足以满足95%的值。我只需要LONGTEXT
5%的值。
现在我想知道,在LONGTEXT
中存储一个小值会浪费大量空间吗?这是优化吗?
答案 0 :(得分:3)
让我们看一下MySQL文档。
TEXT [(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
TEXT列,最大长度为65,535(2 ^ 16 - 1)个字符。 如果值包含多字节,则有效最大长度较小 字符。每个TEXT值使用2字节长度前缀存储 表示值中的字节数。
LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
TEXT列,最大长度为4,294,967,295或4GB(2 ^ 32 - 1) 字符。如果值包含,则有效最大长度较小 多字节字符。 LONGTEXT列的有效最大长度 还取决于配置的最大数据包大小 客户端/服务器协议和可用内存。每个LONGTEXT值都是 使用指示字节数的4字节长度前缀存储 在价值中。
MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
一个TEXT列,最大长度为16,777,215(2 ^ 24 - 1) 字符。如果值包含,则有效最大长度较小 多字节字符。每个MEDIUMTEXT值使用3字节存储 length前缀,表示值中的字节数。
因此前缀的区别是2个字节。