Gemäß den MySQL-Dokumenten gibt es vier TEXT-Typen:
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
Was ist die maximale Länge, die ich in einer Spalte jedes Datentyps speichern kann, vorausgesetzt, die Zeichenkodierung ist UTF-8?
Gemäß den MySQL-Dokumenten gibt es vier TEXT-Typen:
Was ist die maximale Länge, die ich in einer Spalte jedes Datentyps speichern kann, vorausgesetzt, die Zeichenkodierung ist UTF-8?
Antworten:
Aus der Dokumentation :
Beachten Sie, dass die Anzahl der Zeichen , die in Ihrer Spalte gespeichert werden können, von der Zeichencodierung abhängt .
quelle
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.
Weitere Informationen finden Sie in Ankans Antwort.Erweiterung der gleichen Antwort
Dies ist eine grobe Schätzungstabelle für schnelle Entscheidungen!
xx
Bitte lesen Sie auch die Antwort von Chris V: https://stackoverflow.com/a/35785869/1881812
quelle
TINYTEXT
zählt 1 Byte + 8 Byte gegen die Datensatzgröße, während AVARCHAR(255)
von 1 Byte + 255 Byte bis zu 2 Byte + 1020 Byte (4 Byte UTF-8-Zeichen) gegen die Datensatzgröße zählt.Angesichts der Herausforderung von @ Ankan-Zerob ist dies meine Schätzung der maximalen Länge, die in jedem Texttyp gespeichert werden kann, gemessen in Worten :
Im Englischen sind 4,8 Buchstaben pro Wort wahrscheinlich ein guter Durchschnitt (z. B. norvig.com/mayzner.html) ), obwohl die Wortlängen je nach Domäne variieren (z. B. gesprochene Sprache im Vergleich zu wissenschaftlichen Arbeiten), sodass es keinen Sinn macht, zu genau zu sein. Englisch besteht hauptsächlich aus Einzelbyte-ASCII-Zeichen mit sehr gelegentlichen Mehrbyte-Zeichen, so nahe an einem Byte pro Buchstabe. Für Leerzeichen zwischen Wörtern muss ein zusätzliches Zeichen zugelassen werden, daher habe ich von 5,8 Byte pro Wort abgerundet. Sprachen mit vielen Akzenten wie Polnisch würden etwas weniger Wörter speichern, ebenso wie Deutsch mit längeren Wörtern.
Sprachen, die Multi-Byte erfordern wie Griechisch, Arabisch, Hebräisch, Hindi, Thailändisch usw. usw. erfordern, erfordern in UTF-8 normalerweise zwei Bytes pro Zeichen. Ich schätze wild mit 5 Buchstaben pro Wort und habe von 11 Bytes pro Wort abgerundet.
CJK-Skripte (Hanzi, Kanji, Hiragana, Katakana usw.) Ich weiß nichts davon; Ich glaube, dass Zeichen in UTF-8 meistens 3 Bytes benötigen, und (mit massiver Vereinfachung) sie könnten ungefähr 2 Zeichen pro Wort verwenden, so dass sie irgendwo zwischen den beiden anderen liegen würden. (CJK-Skripte benötigen mit UTF-16 wahrscheinlich weniger Speicherplatz, je nachdem).
Dies ignoriert natürlich den Speicheraufwand usw.
quelle
Das ist schön, beantwortet aber nicht die Frage:
"Anstelle von TINYTEXT sollte immer ein VARCHAR verwendet werden." Tinytext ist nützlich, wenn Sie breite Zeilen haben - da die Daten vertraulich gespeichert werden. Es gibt einen Leistungsaufwand, der jedoch eine Verwendung hat.
quelle