Maison > base de données > tutoriel mysql > VARCHAR vs TEXT dans MySQL : quelles sont les principales différences ?

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

Patricia Arquette
Libérer: 2024-12-02 18:17:20
original
343 Les gens l'ont consulté

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 65535 caractères (impossible de limiter la longueur maximale)
  • Disque occupé espace 2 c octets, où c Pour stocker la longueur d'une chaîne
  • ne peut pas être (entièrement) indexée, vous devez spécifier la longueur du préfixe

VARCHAR(M)

  • Caractères M de longueur maximale variable
  • M doit être compris entre 1 et 65535
  • occupe un espace disque de 1 c octets (M ≤ 255) ou 2 c octets (256 ≤ M ≤ 65535), où c est la longueur de la chaîne stockée
  • indexable

Détails

La longueur maximale du TEXTE est fixée à 2¹⁶-1 = 65535 caractères, alors que la longueur maximale de VARCHAR 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 ne sont pas autorisés sur les colonnes TEXTE (sauf pour les index de texte intégral). 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 de saisie possible n'est que 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 est plus long que 65535 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 devez toujours vérifier l'entrée (est-elle trop longue ? Contient-elle du code bizarre ?) avant de stocker les données dans la base de données .

Veuillez noter : 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, je voudrais ajouter que TEXT et VARCHAR sont des types de données de longueur variable, ils minimiseront donc très probablement l'espace requis pour stocker les données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal