首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小

TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小
EN

Stack Overflow用户
提问于 2012-12-18 12:13:35
回答 3查看 897.8K关注 0票数 905

根据MySQL文档,有四种文本类型:

  1. 丁泰克
  2. 文本
  3. 米德米特
  4. 朗泰克

假设字符编码为UTF-8,我可以在每种数据类型的列中存储的最大长度是多少?

EN

回答 3

Stack Overflow用户

发布于 2014-04-19 12:18:30

相同答案的扩展

  1. 所以贴详细概述了管理费用和存储机制。
  2. 正如第(1)点所指出的,应该始终使用VARCHAR而不是TINYTEXT。但是,当使用VARCHAR时,最大行大小不应该超过65535字节。
  3. 正如这里概述的http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-utf8.html,最多3个字节的utf-8。

这是一个用于快速决策的粗略估计表!

  1. 因此,最坏的情况假设(每utf-8字符3字节)到最佳情况(每utf-8字符1字节)
  2. 假设英语平均每个单词有4.5个字母
  3. X是分配的字节数。

x-x

代码语言:javascript
复制
      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

请参阅Chris的回答:https://stackoverflow.com/a/35785869/1881812

票数 281
EN

Stack Overflow用户

发布于 2016-03-04 00:33:26

面对@Ankan-Zerob的挑战,这是我估计的最大长度,它可以存储在每个文本类型的中,以单词表示。

代码语言:javascript
复制
      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脚本(Hanzi,Kanji,Hiragana,Katakana等)我不知道;我相信字符在UTF-8中通常需要3个字节,而且(经过大量简化)它们可能被认为每个字使用大约2个字符,因此它们将介于其他两个字符之间。(CJK脚本可能需要更少的存储使用UTF-16,视情况而定)。

当然,这是忽略存储管理费用等。

票数 55
EN

Stack Overflow用户

发布于 2017-05-18 15:36:47

这很好,但没有回答这个问题:

“应该始终使用VARCHAR而不是TINYTEXT。”如果您有宽行,Tinytext是有用的-因为数据是从记录中存储的。有一个性能开销,但它确实有用处。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13932750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档