De acordo com os documentos do MySQL , existem quatro tipos de texto:
- TINYTEXT
- TEXTO
- MEDIUMTEXT
- LONGTEXT
Qual é o tamanho máximo que posso armazenar em uma coluna de cada tipo de dados, assumindo que a codificação de caracteres é UTF-8?
De acordo com os documentos do MySQL , existem quatro tipos de texto:
Qual é o tamanho máximo que posso armazenar em uma coluna de cada tipo de dados, assumindo que a codificação de caracteres é UTF-8?
Respostas:
A partir da documentação :
Observe que o número de caracteres que podem ser armazenados em sua coluna dependerá da codificação de caracteres .
fonte
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.
consulte a resposta da Ankan para obter mais detalhes.Expansão da mesma resposta
ESTA É UMA TABELA DE ESTIMATIVA ÁSPERA PARA DECISÕES RÁPIDAS!
xx
Consulte também a resposta de Chris V: https://stackoverflow.com/a/35785869/1881812
fonte
TINYTEXT
conta 1 byte + 8 byte no tamanho do registro, enquanto umVARCHAR(255)
conta de 1 byte + 255 byte até 2 byte + 1020 byte (caracteres UTF-8 de 4 bytes) no tamanho do registro.Diante do desafio de @ Ankan-Zerob, esta é a minha estimativa do tamanho máximo que pode ser armazenado em cada tipo de texto medido em palavras :
Em inglês , provavelmente 4,8 letras por palavra é provavelmente uma boa média (por exemplo, norvig.com/mayzner.html ), embora o tamanho das palavras varie de acordo com o domínio (por exemplo, idioma falado e trabalhos acadêmicos), portanto não faz sentido ser muito preciso. O inglês é principalmente caracteres ASCII de byte único, com caracteres de vários bytes muito ocasionais, tão próximos de um byte por letra. Um caractere extra deve ser permitido para espaços entre palavras, por isso arredondei para baixo de 5,8 bytes por palavra. Idiomas com muitos sotaques, como dizer polonês, armazenariam um pouco menos palavras, como faria, por exemplo, alemão com palavras mais longas.
Os idiomas que exigem caracteres de vários bytes , como grego, árabe, hebraico, hindi, tailandês, etc, etc, geralmente requerem dois bytes por caractere em UTF-8. Adivinhando descontroladamente 5 letras por palavra, reduzi de 11 bytes por palavra.
Scripts CJK (Hanzi, Kanji, Hiragana, Katakana, etc.) Não sei de nada; Acredito que os caracteres geralmente requerem 3 bytes em UTF-8 e (com simplificação maciça) eles podem ser considerados para usar cerca de 2 caracteres por palavra, portanto, eles estarão em algum lugar entre os outros dois. (Os scripts CJK provavelmente exigirão menos armazenamento usando UTF-16, dependendo).
Isso obviamente ignora as despesas gerais de armazenamento, etc.
fonte
Isso é legal, mas não responde à pergunta:
"Um VARCHAR sempre deve ser usado em vez de TINYTEXT." O texto minúsculo é útil se você tiver linhas largas - já que os dados são armazenados fora do registro. Há uma sobrecarga de desempenho, mas tem um uso.
fonte