2010-01-18 60 views
27

lectura this question duda poped en mi cabeza:MySQL - TEXTO vs CHAR y VARCHAR

  • CHAR y VARCHAR pueden almacenar hasta 255 caracteres
  • texto puede almacenar hasta 65 mil caracteres
  • tamaño carbón en bytes es el número de caracteres
  • tamaño
  • varchar en bytes es el número de caracteres utiliza + 1

Entonces, ¿cuántos bytes ocupa realmente TEXT? ~ 65kb o número de caracteres usado + 1?

+5

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

+0

Muy buen enlace, gracias! –

+2

'varchar tamaño en bytes es el número de caracteres utilizados + 1' Esto realmente depende de la codificación utilizada en la tabla. Podría, por ejemplo, ser '((# de caracteres) * 2) + 1' para caracteres de 2 bytes. Recuerde que es número de * caracteres * no número de * bytes *. –

Respuesta

24

TEXTO es un tipo de datos de longitud variable, con un máximo de 65,000 caracteres.

LONGTEXT se puede utilizar para más de 4 billones de caracteres.

Para responder a su pregunta: es de longitud variable, y solo ocupará la cantidad de caracteres que almacene.

+4

Además de un poco de sobrecarga para indicar esa longitud, y LONGTEXT tiene más sobrecarga que TEXT tiene más sobrecarga que VARCHAR. –

+3

Verdadero: "LARGO" en "LONGTEXT" en realidad indica la cantidad de caracteres. Un valor largo es de 8 bytes, por lo que la sobrecarga es de 8 bytes. Aunque es insignificante, entonces no lo mencioné. – Pindatjuh

+1

Lógicamente, TEXT también se almacena como BLOB –

7

TEXT ocupa una longitud real de número de sus datos + 2 bytes.

+0

Soooo si está almacenando 256 o más caracteres, VARCHAR y TEXT ocupan la misma cantidad de espacio de almacenamiento. – rinogo