"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > VARCHAR vs TEXT dans MySQL : quelles sont les principales différences ?

VARCHAR vs TEXT dans MySQL : quelles sont les principales différences ?

Publié le 2025-01-24
Parcourir:796

VARCHAR vs. TEXT in MySQL: What are the key differences?

La différence entre VARCHAR et TEXT dans MySQL

Lors de la création d'une table dans MySQL, la longueur de la colonne de type VARCHAR doit être définie clairement. Cependant, pour le type TEXT, il n'est pas nécessaire de préciser la longueur. Alors, quelle est la différence entre VARCHAR et TEXT ?

TL;DR

TEXT

  • Longueur maximale fixe 65 535 caractères (impossible de limiter la longueur maximale)
  • Disque occupé espace 2 c octets, où c Pour stocker la longueur de la chaîne
  • ne peut pas être (entièrement) indexée, vous devez spécifier la longueur du préfixe

VARCHAR(M)

  • Longueur maximale variable M caractères
  • M doit être compris entre 1 et 65535
  • Occupe de l'espace disque 1 c octets (M ≤ 255) ou 2 c octets (256 ≤ M ≤ 65 535), où c est la longueur de la chaîne stockée
  • Indexable

Description détaillée

TEXT a une longueur maximale fixe de 2¹⁶-1 = 65535 caractères, tandis que VARCHAR La longueur maximale de est variable, jusqu'à 2¹⁶-1. Par conséquent, la taille de TEXT n’est pas sélectionnable, mais celle de VARCHAR l’est.

Une autre différence est que les index (à l'exception des index de texte intégral) ne sont pas autorisés sur les colonnes TEXT. Par conséquent, pour indexer cette colonne, vous devez utiliser VARCHAR. Mais attention, la longueur de l'index est également limitée. Si la colonne VARCHAR est trop longue, l'index ne peut utiliser que les premiers caractères de la colonne VARCHAR (voir la documentation CREATE INDEX).

VARCHAR doit également être utilisé si vous savez que la longueur maximale de la chaîne d'entrée possible est uniquement M, comme un numéro de téléphone ou un nom. Ensuite, vous pouvez utiliser VARCHAR(30) au lieu de TINYTEXT ou TEXT, de sorte que même si quelqu'un essaie de sauvegarder le texte complet du Seigneur des Anneaux dans la colonne que vous utilisez pour stocker les numéros de téléphone, vous n'aurez qu'à stocker les 30 premiers caractères : )

Modifier :Si le texte à stocker dans la base de données comporte plus de 65 535 caractères, vous devez sélectionner MEDIUMTEXT ou LONGTEXT, mais attention : la longueur maximale de chaîne stockée est de 16 Mo pour MEDIUMTEXT et de 4 Go pour LONGTEXT. Si vous utilisez LONGTEXT et récupérez les données via PHP (au moins si vous utilisez mysqli et n'utilisez pas la fonction store_result), vous risquez d'obtenir une erreur d'allocation de mémoire car PHP tentera d'allouer 4 Go de mémoire pour garantir que la chaîne entière peut être tamponné. Cela peut également se produire dans d'autres langages que PHP.

Cependant, vous deveztoujoursvérifier l'entrée avant de stocker les données dans la base de données (est-ce trop long ? contient-il un code étrange ?).

Attention : pour les deux types, l'espace disque requis dépend uniquement de la longueur de la chaîne stockée, et non de la longueur maximale. Par exemple, si vous utilisez le jeu de caractères latin1 et stockez le texte "Test" dans VARCHAR(30), VARCHAR(100) et TINYTEXT, il faudra toujours 5 octets (1 octet pour stocker la longueur de la chaîne, chaque caractère 1 octet) . Si vous stockez le même texte dans une colonne VARCHAR(2000) ou TEXT, cela nécessitera également le même espace, mais dans ce cas cela prendra 6 octets (2 octets pour stocker la longueur de la chaîne, 1 mot par caractère Festival).

Voir la documentation pour plus d'informations.

Enfin, j'aimerais ajouter que TEXT et VARCHAR sont des types de données de longueur variable, ils minimiseront donc très probablement le nombre d'espaces vides nécessaires pour stocker les données

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3