MySQL - TEXT与CHAR和VARCHAR的区别

34

阅读这个问题,有一个疑问浮现在我脑海中:

  • char和varchar可以存储最多255个字符
  • text可以存储最多65k个字符
  • char的大小以字节为单位是字符数
  • varchar的大小以字节为单位是使用的字符数+1

那么TEXT实际占用多少字节呢?是约65KB还是使用的字符数+1?


5
好的,您需要将以下链接中的内容翻译为中文:http://stackoverflow.com/search?q=[mysql]+text+vs+varchar在 MySQL 中,TEXT 和 VARCHAR 类型都可以用于存储字符串数据。它们之间的主要区别在于存储和检索方式的不同。VARCHAR 类型适合存储长度可变的文本数据,最大长度为 65,535 个字符。而 TEXT 类型适合存储大量的文本数据,最大长度可达 65,535 字节。VARCHAR 类型的数据存储在表格行中,因此检索速度较快,但是由于 VARCHAR 数据类型限制了其最大长度,因此在存储非常长的文本时可能不太实用。相比之下,TEXT 类型的数据存储在单独的页中,并且能够容纳更大的文本数据,但是检索速度较慢。综上所述,VARCHAR 适合存储较短的字符串数据,而 TEXT 则适合存储较长的文本数据。在使用这两种数据类型时需权衡其优缺点并根据实际情况进行选择。 - OMG Ponies
2
"varchar大小以字节为单位,等于使用的字符数加1"。实际上这取决于表中使用的编码方式。例如,对于2字节字符,它可能是“(字符数* 2)+1”。请记住,这是字符数量,而不是字节数量。 - Stephen P
2个回答

30

TEXT是一种变长数据类型,最大长度为65,000个字符。

LONGTEXT可以存储超过4万亿个字符。

回答你的问题:它是一种可变长度的数据类型,并且只会占用你存储的字符数量。


6
再加上一点开销来指示长度 - 而LONGTEXT的开销比TEXT更大,TEXT的开销比VARCHAR更大。 - Anon.
3
在“LONGTEXT”中,“LONG”实际上表示多少字符。long类型的值占用8个字节,因此开销为8个字节。尽管这很微不足道,但我没有提及它。 - Pindatjuh
1
从逻辑上讲,文本也被存储为BLOB。 - Evan Carroll

9

文本占用的实际长度为您的数据长度 + 2个字节。


所以,如果你要存储256个或更多字符,VARCHAR和TEXT占用的存储空间是相同的吗? - rinogo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接