Non c'è differenza, sotto il cofano c'è tutto varlena
(array a lunghezza variabile).
Controlla questo articolo di Depesz:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/
Un paio di punti salienti:
Per riassumere:
- char(n) – occupa troppo spazio quando si tratta di valori inferiori a
n
(li inserisce inn
), e può portare a piccoli errori a causa dell'aggiunta di spazi finali, inoltre è problematico modificare il limite - varchar(n) – è problematico modificare il limite nell'ambiente live (richiede un blocco esclusivo durante la modifica della tabella)
- varchar – proprio come il testo
- testo – per me un vincitore – su (n) tipi di dati perché mancano i loro problemi, e su varchar – perché ha un nome distinto
L'articolo esegue test dettagliati per dimostrare che le prestazioni degli inserti e delle selezioni per tutti e 4 i tipi di dati sono simili. Dà anche uno sguardo dettagliato ai modi alternativi per vincolare la lunghezza quando necessario. I vincoli o domini basati su funzioni offrono il vantaggio dell'aumento istantaneo del vincolo di lunghezza e, poiché è raro ridurre un vincolo di lunghezza di stringa, depesz conclude che uno di essi è solitamente la scelta migliore per un limite di lunghezza.