PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Differenza tra testo e varchar (carattere variabile)

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 in n ), 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.