2010-01-18 5 views
27

lecture this question doute poped dans ma tête:MySQL - TEXTE vs CHAR et VARCHAR

  • char et varchar peuvent stocker jusqu'à 255 caractères
  • texte
  • peut stocker jusqu'à 65k caractères
  • taille char en octets est le nombre de caractères
  • taille varchar en octets est le nombre de caractères utilisé + 1

Alors, combien d'octets TEXT occupe réellement? ~ 65kb ou nombre de caractères utilisé + 1?

+5

http://stackoverflow.com/search?q=[mysql]+text+vs+varchar –

+0

Très bon lien, merci! –

+2

'taille varchar en octets est le nombre de caractères utilisés + 1' Cela dépend en fait du codage utilisé dans la table. Il pourrait, par exemple, être '((# of chars) * 2) + 1' pour les caractères de 2 octets. Rappelez-vous que c'est le nombre de * caractères * et non le nombre de * octets *. –

Répondre

24

TEXT est un type de données de longueur variable, avec un maximum de 65 000 caractères. LONGTEXT peut être utilisé pour plus de 4 billions de caractères.

Pour répondre à votre question: c'est une longueur variable qui n'occupera que la quantité de caractères que vous stockez.

+4

Plus un peu de surcharge pour indiquer cette longueur - et LONGTEXT a plus de frais généraux que TEXT a plus de frais généraux que VARCHAR. –

+3

True: "LONG" dans "LONGTEXT" indique réellement combien de caractères. Une valeur longue est de 8 octets, donc le temps système est de 8 octets. Bien que ce soit insignifiant, je ne l'ai pas mentionné. – Pindatjuh

+1

Logiquement, TEXT est également stocké sous la forme d'un BLOB –

7

TEXT occupe une longueur réelle de vos données + 2 octets.

+0

Alors, si vous stockez 256 caractères ou plus, VARCHAR et TEXT occupent la même quantité d'espace de stockage? – rinogo