2010-01-18 15 views
27

lettura this question dubbio poped nella mia testa:MySQL - TESTO vs CHAR e VARCHAR

  • char e varchar in grado di memorizzare fino a 255 caratteri
  • testo può memorizzare fino a 65k caratteri
  • dimensioni char in byte è il numero di caratteri
  • dimensioni
  • varchar in byte è il numero di caratteri utilizzato + 1

Quindi quanti byte occupa effettivamente TEXT? ~ 65kb o numero di caratteri utilizzati + 1?

+5

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

+0

Collegamento molto buono, grazie! –

+2

'dimensione varchar in byte è il numero di caratteri usati + 1' Ciò dipende in realtà dalla codifica utilizzata nella tabella. Ad esempio, potrebbe essere '((# di caratteri) * 2) + 1' per caratteri a 2 byte. Ricorda che è il numero di * caratteri * non il numero di * byte *. –

risposta

24

TEXT è un tipo di dati con lunghezza variabile, con un massimo di 65.000 caratteri.

LONGTEXT può essere utilizzato per oltre 4 trilioni di caratteri.

Per rispondere alla tua domanda: è una lunghezza variabile e occuperà solo la quantità di caratteri che memorizzi.

+4

Più un po 'di overhead per indicare quella lunghezza - e LONGTEXT ha un overhead più di quello di TEXT ha più overhead rispetto a VARCHAR. –

+3

Vero: "LONG" in "LONGTEXT" indica in realtà quanti caratteri. Un valore lungo è 8 byte, quindi il sovraccarico è di 8 byte. Anche se è insignificante, quindi non l'ho menzionato. – Pindatjuh

+1

Logicamente, anche il TESTO è memorizzato come un BLOB –

7

TEXT occupa un numero effettivo della lunghezza dei dati + 2 byte.

+0

Se stai memorizzando 256 o più caratteri, VARCHAR e TEXT occupano la stessa quantità di spazio di archiviazione? – rinogo