MySQL docsによると、4 つの TEXT タイプがあります。
- 小さなテキスト
- 文章
- 中文
- ロングテキスト
文字エンコーディングが UTF-8 であると仮定して、各データ型の列に格納できる最大長は?
MySQL docsによると、4 つの TEXT タイプがあります。
文字エンコーディングが UTF-8 であると仮定して、各データ型の列に格納できる最大長は?
タイプ| 最大長 ----------- + -------------------------------------- TINYTEXT | 255(2 8 -1)バイト テキスト| 65,535(2 16 -1)バイト= 64 KiB MEDIUMTEXT | 16,777,215(2 24 -1)バイト= 16 MiB ロングテキスト| 4,294,967,295(2 32 -1)バイト= 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
Chris V の回答も参照してください: 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
英語では、1 単語あたり 4.8 文字がおそらく適切な平均です (例: norvig.com/mayzner.html )。ただし、単語の長さはドメイン (例: 話し言葉と学術論文) によって異なります。したがって、正確すぎても意味がありません。英語はほとんどが 1 バイトの ASCII 文字であり、非常にまれにマルチバイト文字が含まれているため、1 文字あたり 1 バイトに近くなっています。単語間のスペースには余分な文字を許可する必要があるため、1 単語あたり 5.8 バイトから切り捨てました。ポーランド語などのアクセントの多い言語は、より長い単語を持つドイツ語のように、わずかに少ない単語を保存します。
ギリシャ語、アラビア語、ヘブライ語、ヒンディー語、タイ語などのマルチバイト文字を必要とする言語では、通常、UTF-8 で 1 文字あたり 2 バイトが必要です。1 単語あたり 5 文字と大雑把に推測して、1 単語あたり 11 バイトから切り捨てました。
CJK スクリプト (漢字、漢字、ひらがな、カタカナなど) 私は何も知りません。UTF-8 ではほとんどの場合文字に 3 バイトが必要であり、(大幅に簡略化すると) 1 単語あたり約 2 文字を使用すると見なされる可能性があるため、他の 2 つの間のどこかにあると考えられます。(CJK スクリプトは、UTF-16 を使用すると必要なストレージが少なくなる可能性があります)。
もちろん、これはストレージのオーバーヘッドなどを無視しています。