从文档中 :
Type | Maximum length -----------+------------------------------------- TINYTEXT | 255 (2 8 −1) bytes TEXT | 65,535 (2 16 −1) bytes = 64 KiB MEDIUMTEXT | 16,777,215 (2 24 −1) bytes = 16 MiB LONGTEXT | 4,294,967,295 (2 32 −1) bytes = 4 GiB
需要注意的是,可以存储在列中的字符数将取决于字符编码 。
扩展相同的答案
这是快速决策的粗略估算表!
xx
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
请同时参考克里斯五世的答案: https : //stackoverflow.com/a/35785869/1881812
受到 @ Ankan-Zerob 的挑战,这是我对可以存储在以字为单位的每种文本类型中的最大长度的估计:
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
在英语中 ,每个单词 4.8 个字母可能是一个不错的平均水平(例如norvig.com/mayzner.html ),尽管单词长度会根据领域(例如口语与学术论文)而有所不同,所以没有一点太精确了。英文主要是单字节 ASCII 字符,偶尔还有多字节字符,因此每个字母接近一个字节。单词间的空格必须允许有一个额外的字符,因此我将每个单词的 5.8 个字节舍入为小数。带有重音符号的语言(如波兰语)将存储较少的单词,例如德语的单词会较长。
需要多字节字符的语言(例如希腊语,阿拉伯语,希伯来语,印地语,泰语等)在 UTF-8 中通常每个字符需要两个字节。疯狂地猜测每个单词 5 个字母,我舍弃了每个单词 11 个字节。
CJK 脚本(汉字,汉字,平假名,片假名等)我一无所知;我相信字符在 UTF-8 中通常需要 3 个字节,并且(经过大量简化)每个字符可能被认为使用大约 2 个字符,因此它们将位于其他两个字符之间。 (根据情况,使用 UTF-16,CJK 脚本可能需要较少的存储空间)。
当然,这忽略了存储开销等。