MySQLドキュメントごとに、 4つのTEXTタイプがあります。
- TINYTEXT
- テキスト
- MEDIUMTEXT
- 長いテキスト
文字エンコードがUTF-8であると想定して、各データ型の列に格納できる最大長はいくつですか?
MySQLドキュメントごとに、 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 LONGTEXT | 4,294,967,295(2 32 −1)バイト= 4 GiB
多くのことに注意してください文字数あなたの列に格納することができますに依存します文字エンコーディング。
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
詳細については、Ankanの回答を参照してください。
同じ答えの拡大
これは、迅速な決定のための大まかな見積もり表です!
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
クリスVの答えも参照してください:https : //stackoverflow.com/a/35785869/1881812
TINYTEXT
一方、レコードサイズに対するカウント1バイト+ 8バイト、VARCHAR(255)
レコード・サイズに対して+ 1020バイト、2バイト(4バイトのUTF-8文字)に+ 255バイト1バイトから最大カウント。
@ 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文字であり、まれにマルチバイト文字が含まれるため、文字あたり1バイトに近いものです。単語間のスペースには余分な文字を許可する必要があるため、1単語あたり5.8バイトから切り捨てました。ポーランド語などのアクセントの多い言語では、たとえば単語が長いドイツ語のように、格納される単語がわずかに少なくなります。
ギリシャ語、アラビア語、ヘブライ語、ヒンディー語、タイ語などのマルチバイト文字を必要とする言語では、UTF-8では通常、1文字あたり2バイトが必要です。1ワードあたり5文字と乱暴に推測して、1ワードあたり11バイトから切り捨てました。
CJKスクリプト(漢字、漢字、ひらがな、カタカナなど)私は何も知りません。文字はほとんどUTF-8で3バイトを必要とし、(大幅な簡略化により)単語あたり約2文字を使用すると考えられるため、他の2つの文字の間にあると思います。(CJKスクリプトは、場合によっては、UTF-16を使用して必要なストレージが少なくなる可能性があります)。
もちろん、これはストレージのオーバーヘッドなどを無視しています。