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

时间:2016-01-08 14:13:12

标签: mysql optimization sqldatatypes

我有一个列,其数据类型为LONGTEXT。虽然TEXT数据类型足以满足95%的值。我只需要LONGTEXT 5%的值。

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

1 个答案:

答案 0 :(得分:3)

让我们看一下MySQL文档。

  

TEXT [(M)] [CHARACTER SET charset_name] [COLLATE collat​​ion_name]

     

TEXT列,最大长度为65,535(2 ^ 16 - 1)个字符。   如果值包含多字节,则有效最大长度较小   字符。每个TEXT值使用2字节长度前缀存储   表示值中的字节数。

     

LONGTEXT [CHARACTER SET charset_name] [COLLATE collat​​ion_name]

     

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

     

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collat​​ion_name]

     

一个TEXT列,最大长度为16,777,215(2 ^ 24 - 1)   字符。如果值包含,则有效最大长度较小   多字节字符。每个MEDIUMTEXT值使用3字节存储   length前缀,表示值中的字节数。

因此前缀的区别是2个字节。