Ver categorias

 Escolhendo entre VARCHAR e TEXT no MySQL

6 minutos de leitura

Ao criar um banco de dados para aplicações web, é crucial escolher o tipo de dados correto para campos de dados de texto. No MySQL, todos os campos de texto usam um ou outro tipo de dados string. Como existem vários tipos de String e cada um possui características únicas, é fundamental saber qual é o melhor para sua necessidade.

Além da adequação, o tipo de dados também define a quantidade de dados que você pode armazenar no banco de dados. Além disso, o local de armazenamento e o nível de flexibilidade também são afetados pelo tipo de dados.

Portanto, conhecer os diferentes tipos de dados e sua aplicabilidade é útil para o bom desempenho das operações diárias do banco de dados.

Os dois tipos de dados mais populares que você deve conhecer são VARCHAR e TEXT. Então, vamos começar a investigar qual tipo de dados é melhor para você.

Um desenvolvimento recente

Esses dois tipos de dados podem confundir você porque, do MySQL 5.0.3 em diante, ambos os tipos de dados VARCHAR e TEXT suportam o comprimento máximo de 65.535 caracteres. Anteriormente, VARCHAR suportava apenas 255 caracteres.

Com este desenvolvimento, VARCHAR tornou-se bastante semelhante ao TEXT, levantando o debate sobre qual é o melhor. Isso ainda tornou a escolha de um em vez de outro mais desafiadora. Então, vamos simplificar a sua escolha; dê uma olhada em nossa comparação completa, mas se você precisar apenas se apressar, abaixo está a resposta curta:

VARCHAR é a opção ideal para a maioria, mas não para todos

Se você quiser saber o que é melhor no nível superficial, então o VARCHAR é o caminho a percorrer na maioria das vezes. Ele oferece suporte a dados de comprimento variável com no máximo 65.535 caracteres. Além disso, em termos de desempenho, otimiza bem o armazenamento, oferece maior flexibilidade e é totalmente indexável. Porém, VARCHAR nem sempre é a escolha certa. E se você quiser armazenar dados com mais de 65.535 caracteres? Continue lendo para descobrir por que o VARCHAR nem sempre é a escolha certa e quando você deve escolher TEXT.

Uma comparação completa

Tanto VARCHAR quanto TEXT fazem parte do BLOB ou Binary Large Object do MySQL. No entanto, eles também têm características próprias. Vamos entender cada um isoladamente e depois comparar os dois. Mas para compreender completamente o VARCHAR, devemos olhar para a sua origem, ou seja, CHAR.

CHAR e VARCHAR:

CHAR é o antecessor de VARCHAR. Possui os seguintes recursos:

  • Suporta o comprimento fixo de 255 caracteres
  • *Não há necessidade de declarar a contagem de caracteres ao criar a tabela
  • CHAR preenche caracteres vazios com espaços
  • O consumo de armazenamento é fixo mesmo se você consumir menos de 255 caracteres

VARCHAR, por outro lado, é Variable-CHAR com os seguintes recursos:

Ele suporta um comprimento máximo mas não fixo de 65.535 caracteres

Você Terá Declarar a contagem máxima de caracteres ao criar a tabela

  • Não há preenchimento para caracteres não utilizados
    *Ele usa apenas a quantidade necessária de armazenamento e 1-2 bytes a mais para o prefixo de comprimento

A otimização de armazenamento e o limite mais alto de caracteres tornam VARCHAR mais flexível que CHAR.

TEXTO e suas variantes

Chegando agora ao TEXT, ele é muito parecido com o VARCHAR no nível básico, mas possui mais duas variantes, o que o diferencia.

Variante Comprimento Máximo
Texto 65.535 bytes
Texto Médio 16 MB
Texto Longo 4 GB

Embora TEXT seja muito semelhante ao VARCHAR, suas variantes oferecem maior flexibilidade quando os requisitos de armazenamento de dados excedem 65.535 bytes. No entanto, também existem algumas desvantagens em usar TEXT, então vamos compará-lo com VARCHAR.

VARCHAR vs. TEXTO

Abaixo está uma comparação de parâmetros dos dois tipos de dados:

Capacidade de indexação: VARCHAR pode ser totalmente indexado, enquanto colunas TEXT podem ser indexadas apenas até um determinado comprimento.

  • Possibilidade de classificação: VARCHAR pode ser classificado usando todo o comprimento da String, mas isso não é possível para TEXT
  • Uso de armazenamento: TEXT ocupa 2 + comprimento de espaço de armazenamento de string, enquanto VARCHAR ocupa 1 + comprimento de string, até 255 caracteres, e 2 + comprimento de string maior que 255 caracteres. Portanto, até 255 caracteres, VARCHAR ainda usa menos armazenamento que TEXT.
  • Otimização de desempenho: VARCHAR pode ser armazenado na memória do MySQL; no entanto, TEXT não é suportado por ele. Portanto, se uma consulta envolver uma coluna TEXT, serão criadas tabelas temporárias no armazenamento em disco. O uso de tabelas baseadas em disco prejudica os recursos e a conclusão da execução da consulta leva mais tempo.

Veredicto sobre qual é melhor VARCHAR ou TEXT

Observando a comparação acima, VARCHAR se torna a escolha certa para a maioria dos aplicativos da web que exigem classificação de texto com menos de 65.535 caracteres.

No entanto, TEXT ainda é uma escolha razoável se suas limitações não criarem problemas para você, mas pode haver consequências indesejáveis ​​no uso de TEXT, que é eliminado em VARCHAR.

Porém, quando for necessário usar mais de 65.535 caracteres, MEDIUMTEXT e LONGTEXT são as melhores opções.

Mesmo assim, VARCHAR é usado com mais frequência porque não é aconselhável adicionar dados de vários gigabytes ao banco de dados do seu site. Pode ter certas consequências indesejadas e, portanto, a necessidade de usar MEDIUMTEXT e LONGTEXT não é muito comum.

Como escolher o tipo de dados certo?

Embora esteja bastante claro que VARCHAR é melhor na maioria dos casos, uma postagem de blog ou uma explicação detalhada de uma reclamação em um site pode facilmente exceder seu limite de caracteres. Com VARCHAR. Você precisa definir o tipo de dados ao criar a tabela de dados, portanto, talvez não queira que ela seja restringida pelo limite de caracteres. Portanto, MEDIUMTEXT e LONGTEXT devem ser escolhidos para tais campos.

Abaixo está um exemplo de como otimizar os tipos de dados:

  1. Acesse a ferramenta integrada do cPanel chamada phpMyAdmin
  2. Selecione o banco de dados desejado na lista de bancos de dados do seu site
  3. Verifique a estrutura de suas tabelas para descobrir o tipo de dados

A captura de tela acima mostra que os desenvolvedores usaram VARCHAR para campos mais curtos, como tipo de comentário, autor do comentário, URL, etc. No entanto, se você olhar a segunda captura de tela abaixo, eles usam LONGTEXT para campos mais longos, como postagens e conteúdo de comentários.

https://blog.cpanel.com/varchar-vs-text-for-mysql-databases/

As duas possíveis razões para fazer isso são

Os campos VARCHAR precisam ser indexados enquanto os campos LONGTEXT não precisam ser

Há pouca chance de o limite de caracteres exceder o limite VARCHAR, mas em postagens ou campos de conteúdo de comentários, o limite de caracteres pode exceder o limite VARCHAR com base na natureza do conteúdo que precisa ser adicionado.

Portanto, para garantir que não haja necessidade posterior de alteração do tipo de dados, é aconselhável usar uma combinação de VARCHAR e TEXT.

Conclusão

Tanto VARCHAR quanto TEXT têm suas próprias vantagens e desvantagens, portanto, nenhum tipo de dados atende a todos os requisitos. No entanto, a maioria dos requisitos do banco de dados pode ser atendida com VARCHAR, MEDIUMTEXT e LONGTEXT só devem ser usados ​​quando necessário e com cautela.

Desenvolvido por BetterDocs

Deixe um comentário