Według dokumentów MySQL istnieją cztery typy TEKSTÓW:
- TINYTEXT
- TEKST
- MEDIUMTEXT
- LONGTEXT
Jaka jest maksymalna długość, którą mogę zapisać w kolumnie każdego typu danych, zakładając, że kodowanie znaków to UTF-8?
Według dokumentów MySQL istnieją cztery typy TEKSTÓW:
Jaka jest maksymalna długość, którą mogę zapisać w kolumnie każdego typu danych, zakładając, że kodowanie znaków to UTF-8?
Odpowiedzi:
Z dokumentacji :
Pamiętaj, że liczba znaków, które można zapisać w kolumnie, będzie zależeć od kodowania znaków .
źródło
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.
więcej szczegółów można znaleźć w odpowiedzi Ankana.Rozszerzenie tej samej odpowiedzi
TO SZABLONY TABELA SZACUNKOWA DO SZYBKICH DECYZJI!
xx
Proszę również odnieść się do odpowiedzi Chrisa V.: https://stackoverflow.com/a/35785869/1881812
źródło
TINYTEXT
liczy 1 bajt + 8 bajtów w stosunku do wielkości rekordu, podczas gdyVARCHAR(255)
od 1 bajtu + 255 bajtów do 2 bajtów + 1020 bajtów (4 bajty UTF-8 znaków) w stosunku do wielkości rekordu.Przechodząc do wyzwania @ Ankan-Zerob, oto moja ocena maksymalnej długości, jaką można zapisać w każdym typie tekstu mierzonej słowami :
W języku angielskim 4,8 liter na słowo jest prawdopodobnie dobrą średnią (np. Norvig.com/mayzner.html ), chociaż długości słów będą się różnić w zależności od dziedziny (np. Język mówiony vs. artykuły naukowe), więc nie ma sensu być zbyt precyzyjnym. Angielski to w większości jednobajtowe znaki ASCII, z bardzo sporadycznymi wielobajtowymi znakami, tak zbliżonymi do jednego bajtu na literę. Dodatkowy znak musi być dozwolony dla spacji między słowami, więc zaokrągliłem w dół z 5,8 bajtów na słowo. Języki z dużą ilością akcentów, takie jak np. Polski, przechowują nieco mniej słów, podobnie jak np. Niemiecki z dłuższymi słowami.
Języki wymagające znaków wielobajtowych, takie jak grecki, arabski, hebrajski, hindi, tajski itp., Zazwyczaj wymagają dwóch bajtów na znak w UTF-8. Szaleńczo zgadując przy 5 literach na słowo, zaokrągliłem w dół z 11 bajtów na słowo.
Skrypty CJK (Hanzi, Kanji, Hiragana, Katakana itp.) Nic nie wiem; Uważam, że znaki w UTF-8 wymagają w większości 3 bajtów i (z ogromnym uproszczeniem) można by rozważyć użycie około 2 znaków na słowo, więc byłyby gdzieś pomiędzy pozostałymi dwoma. (Skrypty CJK prawdopodobnie wymagają mniej pamięci przy użyciu UTF-16).
To oczywiście ignoruje koszty ogólne związane z przechowywaniem itp.
źródło
To miłe, ale nie odpowiada na pytanie:
„Zamiast TINYTEXT należy zawsze używać VARCHAR.” Tinytext jest przydatny, jeśli masz szerokie wiersze - ponieważ dane są przechowywane poza rekordem. Istnieje narzut związany z wydajnością, ale ma on zastosowanie.
źródło